日付書式コマンド[閉じる]

日付書式コマンド[閉じる]

ミリ秒が終わったら、次の形式でタイムゾーン値を追加する必要があります。以下の例は次のとおりです。

2018-01-07T14:30:03.832-0700

必要な形式を取得するにはUnixコマンドが必要です。

ベストアンサー1

GNUまたはast-openを使用してくださいdate

$ date +%FT%T.%3N%z
2018-07-01T13:44:07.043+0100

(GNU date(GNUではない)は、for、for 1、および//(必要に応じて追加)もstrftimeサポートします。%:z+01:00%::z+01:00:00%:::z+01+01:30+01:30:01:xx

存在するksh93

$ printf "%(%FT%T.%3N%z)T\n"
2018-07-01T13:44:07.043+0100

存在するzsh

$ zmodload zsh/datetime
$ echo $EPOCHREALTIME | IFS=. read s ns
$ strftime %FT%T.$ns[1,3]%z $s
2018-07-01T13:44:07.043+0100

移植性を持たせるには(ここで難しい部分はミリ秒です。たとえば、%z標準²機能をラップするstrftime()すべての項目から取得できるタイムゾーンオフセットではありませんdate)、次のことを試すことができますperl

perl -MTime::HiRes=gettimeofday -MPOSIX -le '
  ($s, $us) = gettimeofday;
  $ms = sprintf("%03d", $us/1000);
  print strftime "%FT%T.$ms%z", localtime $s'

1はい、TZオフセットは、のようにゼロ以外の秒にすることができますTZ='OFF00:00:01' date '+%Z %::z'。実際のタイムゾーンの場合、これは遠い(Unixより前の)時刻の日にのみ機能します。たとえば、参照してください。TZ=Europe/Amsterdam date -d '90 years ago' '+%F %::z'

²しかし、%Fおよび%zはPOSIX strftime()(少なくともSUSv3ベース)で指定されていますが、ユーティリティのPOSIX仕様にはありません(ただし、それをサポートしていないdate現在のシステムはありません)。date

おすすめ記事