日付を解析しようとしています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
)。%F
strftime()
strptime()
似ていますbusybox date
:
unix_time=$(date -u -D %Y-%m-%dT%TZ -d "$time" +%s)
date -d "@$unix_time" +%Y-%m-%d