2010-05-25 62 views
2

說我有一堆時間戳檢查是否使用時間戳bash腳本

當我遍歷這些時間戳,

01:23:00 
12:34:14 
17:09:12 
... 

我想包括:00至08:00僅時間戳是在一定的範圍內: 00和17:00:00

請建議

+0

@Andrei - 假定這些是幾小時:分鐘:秒 - 是那個時間窗口固定,例如你可能需要一個跨越午夜的時間窗口嗎? – 2010-05-25 13:55:05

+0

[比較時間使用日期命令]可能的重複(http://stackoverflow.com/questions/2899110/compare-time-using-date-command) – Cascabel 2010-05-25 13:55:42

+0

這和你以前的問題的唯一區別是,現在你說你重新循環一些輸入。如果你需要幫助循環,詢問一下。如果您需要更多日期/時間比較幫助,請編輯或評論您之前的問題。 – Cascabel 2010-05-25 13:56:45

回答

8

你可以做一個簡單的字符串比較:

if [[ "$timestamp" > "08:00:00" && "$timestamp" < "17:00:00" ]] 

如果你希望在你的範圍的兩端,你要測試的是分別,因爲擊不具有>=<=運營商字符串:

start="08:00:00" 
end="17:00:00" 
if [[ "$timestamp" == "$start" || 
     "$timestamp" > "$start" && "$timestamp" < "$end" || 
            "$timestamp" == "$end" ]] 
+0

我不知道我們可以比較像這樣的時間戳... +1您看到的任何可能的陷阱? – 2013-07-10 18:02:33

+2

@JS웃:我演示的例子使用了詞法比較,OP的例子都是詞法排序的,所以沒有我在這些條件下看不到任何陷阱。你甚至可以用完整的[ISO 8601](http://en.wikipedia.org/wiki/ISO_8601)(或類似的)日期來完成。如果您使用的是Unix紀元時間戳,只需使用數字比較'if((epoch_1> = epoch_2))' – 2013-07-11 00:01:10

+0

謝謝@DennisWilliamson – 2013-07-11 01:23:56