回答
只使用日期和外殼算術:
echo $(($(($(date -d "2010-06-01" "+%s") - $(date -d "2010-05-15" "+%s")))/86400))
不需要使用'$(())'兩次。只需使用一組分組圓括號:'echo $((($(date -d「2010-06-01」「+%s」) - $(date -d「2010-05-15」「+%s」 ))/ 86400))'(爲了強調和可讀性而添加了可選空格) – 2010-08-02 11:05:43
請注意,'%s'特定於GNU日期,因此它可能不適用於非Linux系統。 [comp.unix.shell FAQ](http://cfajohnson.com/shell/cus-faq。html#6)對日期計算有很長的討論(基本上,除非你有GNU日期,否則很難)。 – Gilles 2010-08-02 19:21:55
實際上有一個更大的問題:它有時會在春天失敗...... [我的答案解釋了爲什麼。](http://stackoverflow.com/questions/3385003/shell-script-to-get-difference-in-two-dates/3391111#3391111) – Gilles 2010-08-02 19:32:14
得到它
d1=`date +%s -d $1`
d2=`date +%s -d $2`
((diff_sec=d2-d1))
echo - | awk -v SECS=$diff_sec '{printf "Number of days : %d",SECS/(60*60*24)}'
感謝..
如果你打算使用'(())',你也可以使用'反引號。另外,不需要將某些東西放到'awk'中,只需使用'awk ...'BEGIN {printf ...}''。如果只是整數數學,你並不需要使用'awk':'echo「天數:$(((d2 - d1)/(60 * 60 * 24)))」' – 2010-08-02 11:16:16
謝謝... .............. – Hulk 2010-08-03 05:14:59
有一個解決方案,幾乎作品:使用GNU日期,打印自1970-01-01 00:00的秒數的%s
日期格式。這些可以被減去找到兩個日期之間的時間差。
echo $((($(date -d 2010-06-01 +%s) - $(date -d 2010-05-15 +%s))/86400))
但下面顯示0在某些位置:
echo $((($(date -d 2010-03-29 +%s) - $(date -d 2010-03-28 +%s))/86400))
由於日光節約時間,還有那些時間之間的僅23小時。您需要添加至少一個小時(最多23個)才能安全。
echo $((($(date -d 2010-03-29 +%s) - $(date -d 2010-03-28 +%s) + 43200)/86400))
或者您可以告訴date
在沒有DST的時區工作。
echo $((($(date -u -d 2010-03-29 +%s) - $(date -u -d 2010-03-28 +%s))/86400))
(POSIX說調用參考時區爲UTC,但同時也表示,不計閏秒,這樣的秒在一天的數量總是恰好在GMT + XX時區86400。)
你的第三個例子實際上產生了'82800',因爲你把表達誤拼了,實際上由於'/'的更高優先級而加了'0',你能修復這個錯字嗎? – 2013-05-08 12:06:18
牛羚日期懂得%j來顯示日年:
echo $(($(date -d 2010-06-01 +%j) - $(date -d 2010-05-15 +%j)))
交叉歲的邊界將給出錯誤的結果,但自從你給固定日期...
OSX date
不同於GNU date
。在OSX中這樣工作。這是非便攜式解決方案。
start_date=$(date -j -f "%Y-%m-%d" "2010-05-15" "+%s")
end_date=$(date -j -f "%Y-%m-%d" "2010-06-01" "+%s")
echo $((($end_date - $start_date)/(60 * 60 * 24)))
想法仍然在其他答案相同。將日期轉換爲紀元時間,將結果減去並將結果轉換爲日期。
- 1. 如何獲得差異日期在shell腳本大於6個日曆天
- 2. 如何減去兩個日期和時間來獲得差異
- 3. 比較兩個日期並獲得年,月,日的差異
- 4. 如何獲得兩個日期之間的星期差異
- 5. 來獲得日期差
- 6. 獲取差異在兩個日期
- 7. 如何獲得兩個日期之間的差異與DQL
- 8. 錯誤試圖獲得兩個日期的差異
- 9. 如何獲得兩個日期之間的差異?
- 10. 如何獲得兩個日期時間差異
- 11. 如何獲得兩個日期之間的差異?
- 12. 如何獲得PHP中兩個日期之間的差異?
- 13. 如何獲得兩個日期之間的差異?
- 14. 如何獲得兩個日期之間的差異與時序
- 15. 減去兩個日期以獲得月份差異
- 16. 如何在幾小時內獲得兩個日期的差異?
- 17. 如何獲得兩個日期之間的差異
- 18. 計算shell腳本中日期之間的差異
- 19. 如何獲得PHP中兩個日期之間的絕對日期差異?
- 20. Shell腳本日期
- 21. 在兩個日期之間獲取日期差異
- 22. 我如何獲得日期差異?
- 23. 在兩秒鐘內獲得兩個喬達日期之間的差異
- 24. Shell腳本在Linux中獲取日期
- 25. 在shell腳本中獲取日期
- 26. Grails - 兩個日期之間的差異
- 27. VB - 兩個日期之間的差異
- 28. 兩個日期之間的差異
- 29. 兩個SimpleDateFormat的日期差異SQL
- 30. Javascript - 兩個日期之間的差異
'python -c'from datetime import date; print(date(2010,6,1) - date(2010,5,15))。days'' – jfs 2010-08-02 04:53:31