날짜 형식 명령 [닫기]

날짜 형식 명령 [닫기]

밀리초가 끝나면 다음 형식으로 시간대 값을 추가해야 합니다. 아래 예는 다음과 같습니다.

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

관련 정보