次のようなタイムスタンプがあります。2022-11-09T14:41:15.555641007Z
次のようにUnix epoch時間(秒)に変換したいと思います。1668005090
次の方法でどのようにこれを達成できますか?強く打つ?
答え1
次のように(GNUまたはast-openの実装を前提としてdate
):
$ date -d '2022-11-09T14:41:15.555641007Z' +%s
1668004875
答え2
macOSでは、入力がUTCとして知られていると仮定しています。
% t='2022-11-09T14:41:15.555641007Z';
% date -j -f "%Y-%m-%dT%H:%M:%S%z" "${t%.*}+0000" +%s
1668004875
期待どおりに${t%.*}+0000
ナノ秒とマーキングを削除し、タイムZ
ゾーンマーキングを追加します。+0000
%z
UTCでない場合は、以前の形式に変換して使用する必要があります。2022-11-09T14:41:15+hhmm
date -j -f "%Y-%m-%dT%H:%M:%S%z" "$t" +%s
オプションは次のとおりです。FreeBSDバージョンdate
似ているようで、ここにも適用できます。