Date

為什麼 Unix 日期在 2 到 3 個月之間存在差異

  • July 24, 2014

這怎麼可能,我該如何處理?我正在製作依賴於 Unix 的備份腳本,date並發現了一個有趣的錯誤:

[root@web000c zfs_test]# date +%y-%m-%d --date='2 months ago'
14-04-01
[root@web000c zfs_test]# date +%y-%m-%d --date='3 months ago'
14-02-28
[root@web000c zfs_test]# date
Sun Jun  1 00:08:50 CEST 2014

由於夏令時(夏令時),您會看到這種行為。

因為您目前處於夏令時,您的時鐘提前一小時,當您在 6 月 1 日午夜剛過時要求三個月前,時間最終“提前”一小時,因為它不是夏令時三幾個月前。

GNU 日期文件建議在分別詢問相對日期或月份時,使用中午 12:00 和每月 15 日作為起點來解決此問題。例如:

date +%y-%m-%d --date="$(date +%Y-%m-15) -3 month"

引用自:https://serverfault.com/questions/604510