밀리초가 끝나면 다음 형식으로 시간대 값을 추가해야 합니다. 아래 예는 다음과 같습니다.
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 및 for // ( 필요한 만큼 추가 ) 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 오프셋은 에서와 같이 0이 아닌 초가 될 수 있습니다 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
답변2
%z
시간 형식에 추가하세요 . 예:
$ date
Sun Jul 1 04:55:02 EDT 2018
$ date '+%z'
-0400
$
답변3
ISO8601 시간 형식은 GNU Date를 사용하여 얻을 수 있습니다.
$ date -Iseconds
2018-07-01T06:57:25-0700
그러나 시간을 밀리초 단위로 얻으려면 자세한 문자열을 지정해야 합니다. 노력하다:
$ date +'%Y-%m-%dT%H:%M:%S.%3N%z'
2018-07-01T06:57:28.457-0700