2015-12-13 17 views
0

我想用bash產生一個起點和終點之間的日期和時間列表。輸出格式爲一個範圍內的日期,用bash

我想輸出爲mm/dd/yyyy hh:mm格式。

在命令行中,命令:

date +"%m/%d/%Y %H:%M" 

產生了我要找的輸出。

當我使用當前註釋掉的行時,出現錯誤。

date: extra operand ‘%H:%M’ 
Try 'date --help' for more information. 

我不知道如何改變腳本來產生我正在尋找的輸出。

DATE=date 
#FORMAT="%m/%d/%Y %H:%M" 
FORMAT="%m/%d/%Y" 
start=`$DATE +$FORMAT -d "2013-05-06"` 
end=`$DATE +$FORMAT -d "2013-09-16"` 
now=$start 
while [[ "$now" < "$end" ]] ; do 
    now=`$DATE +$FORMAT -d "$now + 1 day"` 
    echo "$now" 
done 

我玩過在開始和結束時間後添加00:00,但沒有奏效。

任何想法,我得到的輸出格式是錯誤的?

代碼來自: https://ocroquette.wordpress.com/2013/04/21/how-to-generate-a-list-of-dates-from-the-shell-bash/

+0

一般來說,最好是使用'啓動= $(日期+ 「$ FORMAT」 ...)',而不是使用反引號''開始='日期+ 「$ FORMAT」 ... ''。 –

回答

2

當您使用FORMAT="%m/%d/%Y %H:%M"你需要引號,因爲它包含一個空間,所以:

now=`$DATE +"$FORMAT" -d "$now + 1 day"` 

另外,我不認爲你可以比較日期這樣的。您可能需要時間戳:

date +%s 
+0

或者按照ISO 8601變體符號:'%Y /%m /%d%H:%M'可以按日期順序按字母順序排序。 ISO 8601在時間前一個月的前一個月提前一年,其中一個好處是可以使用簡單的字母數字排序將結果分類到日期順序中。 –

+0

我喜歡使用yyyy/mm/dd格式,但我試圖導入的應用程序需要它以所述的格式。儘管如此,用簡單的ls進行排序並不錯。 – CS3000911

+0

當我將現在的行替換爲帶引號的行時,我仍然得到有關額外操作數的相同錯誤。 – CS3000911

相關問題