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