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