2022-03-17T08:06:20.411493824Z 형식으로 날짜를 얻는 방법

2022-03-17T08:06:20.411493824Z 형식으로 날짜를 얻는 방법

2022-03-17T08:06:20.411493824Z간단한 bash 명령을 사용하여 날짜를 얻는 방법에 대한 간단한 대답을 찾을 수 없는 것 같습니다 . 그것이 현재 날짜와 시간입니다.

다음을 시도했지만 추가 숫자를 얻지 못했습니다.

DATE=$(date '+%FT%TZ')

echo $DATE

답변1

GNU를 사용하여 ISO 8601 형식(나노초)을 사용하여 UTC 시간을 찾는 경우 date:

date -Ins -u

정확한 형식을 원하면 GNU의 UTC 형식을 사용하세요 date.

date -u +%Y-%m-%dT%H:%M:%S.%NZ

또는

date -u +%FT%T.%NZ

답변2

GNU에 액세스할 수 없는 경우(개별 호출에 수천 또는 수백만이 필요할 때 나노초 정밀도를 얻는 것이 합리적입니까 date) 다른 셸로 전환할 수 있는 옵션이 있는 경우 다음을 수행할 수 있습니다.date

존재하다 zsh:

TZ=UTC0 print -rP '%D{%FT%T.%9.Z}'

(여기에서는 프롬프트 확장을 통해 사용됨 print -P)

또는:

zmodload zsh/datetime
TZ=UTC0 strftime %FT%T.%9.Z $epochtime

또는 변수에 저장합니다.

TZ=UTC0 print -rPv var '%D{%FT%T.%9.Z}'

또는:

zmodload zsh/datetime
TZ=UTC0 strftime -s var %FT%T.%9.Z $epochtime

또는:

() { local -x TZ=UTC0; var=${(%):-%D{%FT%T.%9.Z}}; }

ksh93 사용:

TZ=UTC0 printf '%(%FT%T.%NZ)T\n'

또는 변수에 저장합니다.

var=${ printf '%(%FT%T.%NZ)T'; }

bash실제로 몇 년 전에 하위 집합이 복사되었지만 ksh93나노초를 지원하지 않았습니다.printf '%(format)T' datespec%N

버전 5.0부터 zsh에 $EPOCHSECONDS합계 $EPOCHREALTIME변수(배열 아님 )에 대한 $epochtime지원이 추가되었습니다. 마이크로초 정밀도만 있지만 사용 사례에는 충분할 수 있습니다.

t=$EPOCHREALTIME; TZ=UTC0 printf "%(%FT%T)T.${t#*.}Z\n" "${t%.*}"

이 모든 것은 내장된 기능만 사용하고 어떤 프로세스도 분기하지 않으므로 밀리초당 상당히 많은 프로세스를 실행할 수 있어야 합니다.

$ repeat 10 TZ=UTC0 print -rP '%D{%FT%T.%9.Z}'
2022-03-17T12:04:56.563450377Z
2022-03-17T12:04:56.563488246Z
2022-03-17T12:04:56.563512375Z
2022-03-17T12:04:56.563530355Z
2022-03-17T12:04:56.563545833Z
2022-03-17T12:04:56.563559764Z
2022-03-17T12:04:56.563575171Z
2022-03-17T12:04:56.563594030Z
2022-03-17T12:04:56.563611980Z
2022-03-17T12:04:56.563626251Z
$ repeat 10 date -u +%FT%T.%NZ
2022-03-17T12:05:28.902806919Z
2022-03-17T12:05:28.905552036Z
2022-03-17T12:05:28.907594864Z
2022-03-17T12:05:28.908563238Z
2022-03-17T12:05:28.909433758Z
2022-03-17T12:05:28.910549552Z
2022-03-17T12:05:28.911642330Z
2022-03-17T12:05:28.912596098Z
2022-03-17T12:05:28.913575587Z
2022-03-17T12:05:28.914538184Z

관련 정보