date
「2時間」のような表現を7200のような秒数に変換しようとしています。次の呼び出しでこれを行うことができると思います。
date -d "1970-01-01 00:00:00 + 2 hours" +"%s"
ところで、これを行うと非常に奇妙な結果が現れました。 (私のものには/etc/timezone
「Europe / Paris」が含まれているので、これを使用して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つの結果をどのように得るかは本当に混乱しています。この結果の間の論理を理解する人はいますか?
ベストアンサー1
+ x
タイムゾーン指定子を提供するとします(たとえば、2013-04-25 19:52:36 +4
UTCより4時間早いタイムゾーンで有効なタイムスタンプを検討してください)。
その後、「分」という言葉を見て、それを分と同義語として扱うので、1分後に通知します。
明示的なタイムゾーン指定子を入力すると機能します。
anthony@Zia:~$ TZ=utc date -d "1970-01-01 00:00:00 UTC" +"%s"
0
anthony@Zia:~$ TZ=utc date -d "1970-01-01 00:00:00 UTC + 0 minutes" +"%s"
0
anthony@Zia:~$ TZ=utc date -d "1970-01-01 00:00:00 UTC + -1 minutes" +"%s"
-60
anthony@Zia:~$ TZ=utc date -d "1970-01-01 00:00:00 UTC + 1 minutes" +"%s"
60
UTC
後ろの秒フィールドを参照してください。 2番目の項目を入力することもできます+0
。
anthony@Zia:~$ TZ=utc date -d "1970-01-01 00:00:00 +0 + -1 minutes" +"%s"
-60
...しかし、少なくとも個人的には読みにくいです。
またはZ
秒の後に追加することもできます。上記の例では、実際にTZ
環境変数をUTCに設定する必要はありません。