計算にエポック時間を使用するための構文と「date」コマンドの「--date=STRING」の使い方

計算にエポック時間を使用するための構文と「date」コマンドの「--date=STRING」の使い方

1970-01-01 00:00:00 UTC以降の秒単位で表される時間があります1524884843。例: 。

上記で指定した時間から1ヶ月後の時間を得たいと思います。

通常、今から1ヶ月後の時間を取得するには、次のようにします。

root@beaglebone:~/bbbrtc# date
Sat Apr 28 03:12:54 UTC 2018
root@beaglebone:~/bbbrtc# date -d "now+1 month"
Mon May 28 03:12:57 UTC 2018

-dパラメータの前にas....を付けて@エポック秒を指定することもできます。

root@beaglebone:~/bbbrtc# date -d "@1524884843"
Sat Apr 28 03:07:23 UTC 2018

@ただし、前に付けられたエポック時間を計算と組み合わせようとするとエラーが発生します。

root@beaglebone:~/bbbrtc# date -d "@1524884843+1 month"
date: invalid date `@1524884843+1 month'

新起源時間と相対計算を組み合わせる正しい構文は何ですか?

答え1

計算結果を括弧内に入れることができます。

root@beaglebone:~/bbbrtc# date -d "@1524884843+(1 month)"
Sat Apr 28 03:07:23 UTC 2018

答え2

ast-openを使用するdate(ビルド方法と環境によっては、ksh93の組み込み日付である可能性があります):

$ date -d '#1234567890'
Fri Feb 13 23:31:30 GMT 2009
$ date -d "#1234567890 30 days"
Sun Mar 15 23:31:30 GMT 2009

(astは date月単位のオフセットをサポートしていません(月には固定長はありません)。)

GNUを使用すると、エポック時間を1970-01-01 00:00:00 UTCに基づいて秒単位のオフセットとして表す以前のdate方法(サポートが追加される前)を使用できます。@epoch

$ date -d '1970-01-01T00:00:00Z + 1234567890 seconds'
Fri 13 Feb 23:31:30 GMT 2009
$ date -d '1970-01-01T00:00:00Z + 1234567890 seconds + 1 month'
Mon 16 Mar 23:31:30 GMT 2009

しかしここで注意する点は、1ヶ月はい31日、おそらくdate考慮するからです。1ヶ月オフセットは1970年1月に基づいています。

あなたがGNUであり、月を基準にした日付のように動作したい場合、つまり月のdateオフセットは、開始日と同じ月の同じ日(次の月にそのような日があると仮定)を提供します(時間間隔で多少のDST変更があります。必ずしも同じ時間ではありません。@isaacの2段階の方法

関連情報