私のスクリプトのdateコマンドに興味深い問題があります。私のスクリプトは、特定の日付範囲に対して時間ごとのデータロードを生成します。日付関数を使用して、「開始」日付に達するまで「開始」日付を1時間ずつ増やします。日付方法はうまく機能し、期待どおりに「開始」日付に1時間を追加します。ただし、2017/11/05 01:00:00に達すると増加は停止します。複数の日付でテストしてみませんでしたが、同じ問題がある別の日付は2016/11/06 01:00:00です。
$ date -d "2017/11/05 01:00:00 1 hour" +"%Y/%m/%d %T"
2017/11/05 01:00:00
$ date -d "2016/11/06 01:00:00 1 hour" +"%Y/%m/%d %T"
2016/11/06 01:00:00
Linuxバージョン Linux 3.10.0-229.4.2.el7.x86_64
答え1
問題の原因はDST(夏時間)でした。 DST日付午前1時(11月の最初の日曜日)をdateコマンドに渡すと、内部的に日付に1時間を加えてDSTから1時間を減算できます。解決策は、@jkan5855が提案したように-u(UTC)を使用することです。
$ date -d "2017/11/05 01:00:00 1 hour" +"%Y/%m/%d %T" -u
答え2
date --version
あなたが飛んでいる日付のバージョンを確認してください。のdate (GNU Coreutils) 8.30
コマンド
GNU Coreutilsを再インストールまたは更新します(Linux /サブシステムに適したパッケージを見つける)。他の誰もこの問題を経験していないようです。あなたの正確なコマンドが私の2017/11/05 02:00:00
ために印刷されます。
それでも問題が解決しない場合、コンピュータは一時的に日付の影響を受けますか?よりよく説明する方法はありませんが、他のサブシステム/ターミナルでもこの問題が発生するため、コンピュータを再起動してみてください。