時間変数のタイムスタンプを取得するには?

時間変数のタイムスタンプを取得するには?

私のオペレーティングシステムで

date
Tue 01 Nov 2022 06:58:10 PM HKT

Unixタイムスタンプを入手する

date +%s
1667300297

UTC時間を取得します。

date -u
Tue 01 Nov 2022 10:58:08 AM UTC

変数をUTC時間として指定した場合

x=$(date -u)

それでは、変数のタイムスタンプを取得する方法は?

$x  +%s
bash: Tue: command not found

答え1

現在の時間をエポック以降の秒数として指定するには、次の手順を実行します。

x=$(date +%s)

zsh将来のzmodload zsh/datetimeバージョンまたは最新バージョンを使用すると、bashこの操作も実行できますx=$EPOCHSECONDS

x=$(date -u)ユーザーのロケールとシステムの違いに応じて、Tue 01 Nov 2022 10:58:08 AM UTCまたは同じmar. 01 nov. 2022 12:05:48 UTCものを保存します。2022年 11月 01日 星期二 12:06:04 UTC$x

その日付に対応するエポック秒を取得するのは難しいです。

たとえばTue 01 Nov 2022 10:58:08 AM UTC、GNU実装にアクセスできる場合はdate幸運です。これは、オプションによって認識される日付形式の1つであるためです-d

だから:

epoch=$(date -d "$x" +%s)

そこで働きます。あなたのdateコマンドはGNUコマンドではないようですが、GNUは次のようにdate使用できます。gdate/opt/gnu/bin/date

関連情報