date
で遊んでいました 「2時間」などの式を7200などの秒数に変換しようとします。これは、次のような呼び出しで実行できると思いました。
date -d "1970-01-01 00:00:00 + 2 hours" +"%s"
それでも、そうしている間、私は非常に奇妙な結果に気づきました。 (私の/etc/timezone
「ヨーロッパ/パリ」が含まれているため、TZ
を使用します UTC時間を強制します。)
omega:~$ TZ=utc date -d "1970-01-01 00:00:00" +"%s"
0
omega:~$ TZ=utc date -d "1970-01-01 00:00:00 + 0 minutes" +"%s"
60
omega:~$ TZ=utc date -d "1970-01-01 00:00:00 + -1 minutes" +"%s"
3660
omega:~$ TZ=utc date -d "1970-01-01 00:00:00 + 1 minutes" +"%s"
-3540
最初の結果は十分に合理的ですが、date
の方法については本当に戸惑っています。 最後の3つの結果を思いついたかもしれません。誰かがそれらの結果の間の論理を理解していますか?
承認された回答:
+ x
が必要だと思います タイムゾーン指定子として(例:2013-04-25 19:52:36 +4
UTCの4時間前のタイムゾーンでの有効なタイムスタンプです。
次に、「分」という単語が表示され、それが分の同義語として扱われるため、1分後に表示されます。
明示的なタイムゾーン指定子を入力すると、次のように機能します。
[email protected]:~$ TZ=utc date -d "1970-01-01 00:00:00 UTC" +"%s"
0
[email protected]:~$ TZ=utc date -d "1970-01-01 00:00:00 UTC + 0 minutes" +"%s"
0
[email protected]:~$ TZ=utc date -d "1970-01-01 00:00:00 UTC + -1 minutes" +"%s"
-60
[email protected]:~$ TZ=utc date -d "1970-01-01 00:00:00 UTC + 1 minutes" +"%s"
60
UTC
に注意してください 秒フィールドの後。 2番目の+0
を入力することもできます :
[email protected]:~$ TZ=utc date -d "1970-01-01 00:00:00 +0 + -1 minutes" +"%s"
-60
…しかし、少なくとも個人的には、それははるかに読みにくいです。
または、Z
を配置することもできます 秒後など。実際にはTZ
は必要ありません。 上記の例でUTCに設定される環境変数。