2016-11-17 105 views
-1

我寫一個腳本返回基於用戶輸入格式化的日期,它可以是:轉換4位數字爲日期時間(年+與最小值軟墊)

  • 十一分之二千零一十六
  • 2016年11月10日
  • 2016年11月10日24

基本上我不得不墊這些輸入以最小可能的值。 (2016年回報2016/01/01 00:00:00)。

我試着date -d "2016"這樣做,但這種返回時間下午八時16分今天的日期

非常感謝!

+0

請將您希望的輸出樣本輸入添加到您的問題中。 – Cyrus

+1

(2016年回報2016/01/01 00:00:00)....它在那裏:) – user3336544

回答

0

下面是一個腳本,應該基本上做你想做的事:

#!/bin/bash 
echo INPUT:$1 

[[ "$1" == "" ]] && YEAR=2016 
[[ "$1" =~ ^[0-9]{4}$ ]] && YEAR="$1" 
[[ $YEAR == "" ]] && YEAR=`echo "$1" | grep -Po ".*(?=/[0-9]{2}/)"` 
MONTH=`echo "$1" | grep -Po "(?<=[0-9]{4}/).*(?=/[0-9]{2})"` 
DAY=`echo "$1" | grep -Po "(?<=/[0-9]{2}/).*(?=\)"` 
HR=`echo "$1" | grep -Po "(?<=[0-9]{2}\).*"` 
MIN="00" 
SEC="00" 
[[ "$MONTH" == "" ]] && MONTH="01" 
[[ "$DAY" == "" ]] && DAY="01" 
[[ "$HR" == "" ]] && HR="00" 

echo $YEAR/$MONTH/$DAY $HR:$MIN:$SEC 

請注意,這是一個基本的骨架,你將不得不添加自己的邊界情況和條件。

0

您可以使用date命令得到你的輸出像下面

D1 = date +%Y #Output是2016 D2 = date +%Y/%m #Output是十一分之二千〇十六 D3 = date +%Y/%m/%d #Output是2016年11月10日 D4 = date +%Y/%m/%d\t%H #Output是2016 - > \ T-標籤中指定,如果你想要的全部時間,你可以用 「%X或%T」,而不是 「%H」

回聲$ D1 回聲$ D2 回聲$ d3 echo $ d4

+0

對於用戶輸入日期,喜歡從已使用的輸入,並將其保存在一個變量中,並獲取您的4倍通過使用cut或sed命令輸出 – Barcode

相關問題