2017-03-08T19:41:26Zの日付を解析する方法は?

2017-03-08T19:41:26Zの日付を解析する方法は?

日付を解析しようとしています2017-03-08T19:41:26Z

希望の出力は2017-03-08です。

ベストアンサー1

POSIXシェルを使用して前の部分を抽出するには、次のようにしますT

time=2017-03-08T19:41:26Z
utc_date=${time%T*} # as already said

または Bourne または非 POSIX シェルと互換性があります。

expr "$time" : '\(.*\)T'

2017-03-08T19:41:26Zさて、これを参考にしてください。ジュール時間(UTCの別の名前)、正確な瞬間の明確な仕様です。

当時、ロンドンの日付は2017-03-08でしたが、バンコクの日付は2017-03-09(夜明け)でした。

知りたいなら地元の時間指定日(UTC日付ではありません)、つまりバンコクユーザーは2017-03-09を、ロンドンユーザーは2017-03-08を取得します。いくつかのオプションがあります。

GNUの使用date:

time=2017-03-08T19:41:26Z

date -d "$time" +%F

(GNU日付はzulu形式を認識できるので非常に簡単です。)

ksh93同じ

printf '%(%F)T\n' "$time"

組み込みzsh機能:

zmodload zsh/datetime
TZ=UTC0 strftime -rs unix_time %Y-%m-%dT%TZ $time &&
strftime %Y-%m-%d $unix_time

(これをサポートするシステム(GNUシステムなど)でそれを置き換えることができます%Y-%m-%d)。%Fstrftime()strptime()

似ていますbusybox date

unix_time=$(date -u -D %Y-%m-%dT%TZ -d "$time" +%s)
date -d "@$unix_time" +%Y-%m-%d

おすすめ記事