date
명령은 RFC-3339는 (도 현대도 제정신 이메일 제외) 모든 곳에서 사용되는 현대, 광범위하게, 제정신 형식이기 때문에 일종의 슬픈입니다 같은 일을, 제공하지 않습니다.
시간대 오프셋은 현재 -08 : 00이므로이 명령의 가장 간단한 형식은 현재 시간을로 인쇄해야합니다 2013-09-05T14:58:33.102-08:00
.
답변
GNU 구현 date
(버전 5.90 이상)으로 전환하여 여러 형식을 수행 할 수있는 것처럼 보입니다 --rfc3339=
.
예
$ date --rfc-3339=date
2014-03-19
$ date --rfc-3339=seconds
2014-03-19 18:00:05-04:00
$ date --rfc-3339=ns
2014-03-19 18:00:08.179780629-04:00
를 T
해킹으로 추가 하려면 다음 을 수행하십시오.
$ date --rfc-3339=seconds | sed 's/ /T/'
2014-03-19T18:35:03-04:00
밀리 초 단위로 원하는 경우 :
$ date --rfc-3339=ns | sed 's/ /T/; s/\(\....\).*\([+-]\)/\1\2/g'
2014-03-19T18:42:52.362-04:00
참고 문헌
답변
GNU date
(5.90 이상) :
$ TZ=America/Anchorage date '+%FT%T.%N%:z'
2014-03-19T14:29:31.041119357-08:00
교체 %N
로 %3N
, 밀리 초 %6N
마이크로 초 …
AFAIK, POSIX, Unix 또는 LSB 사양 중 어느 것도 초 미만의 단위로 시간을 표시 할 수있는 명령을 지정하지 않지만 RFC 3339에서는 소수 부분이 선택 사항입니다.
POSIX / Unix / LSB strftime은 %z
TZ 오프셋을로 표시하도록 지원 -0800
하므로 가장 이식성이 좋은 것은 다음과 같습니다.
$ TZ=America/Anchorage perl -MPOSIX -le '$t = strftime "%Y-%m-%dT%T%z",
localtime; $t =~ s/..$/:$&/; print $t'
2014-03-19T14:30:23-08:00
답변
GNU date
에는 ISO-8601 형식이 내장되어 있습니다. RFC-3339와 매우 유사하거나 동일하지 않습니까?
1065 % date --iso-8601=seconds
2014-03-19T16:51:16-0600
답변
좋은 나이는 어떻습니까?
$ date +%Y-%m-%dT%T%z
2015-10-29T14:47:06+0200
답변
RFC3339 (ISO8601) 에 따라 시간을 더 쉽게 형식화 할 수도 있습니다 .
$ date -u +"%Y-%m-%dT%H:%M:%SZ"
2016-11-08T08:52:55Z
참고 : 이 형식은 Label Schema Convention RC 1.0 에서도 사용됩니다.
답변
echo "Local date only:"
date '+%Y-%m-%d'
echo
echo "Local date and time:"
date '+%Y-%m-%dT%H:%M:%S%z' | sed 's@^.\{22\}@&:@'
echo
echo "UTC date and time:"
date -u '+%Y-%m-%dT%H:%M:%SZ'
이러한 명령은 %z
변환 사양을 제외하고 POSIX와 호환됩니다 . 그러나 %z
Linux, MacOS, FreeBSD, OpenBSD, NetBSD, DragonFlyBSD, Solaris, Minix 및 Haiku에서 널리 지원되며 동일한 방식으로 작동합니다. 또한 Busybox, Toybox 및 sbase (suckless.org 기본 시스템 유틸리티)의 도구와 함께 작동합니다. %z
시간대 오프셋 ±HHMM
형식으로 출력 하므로 sed
콜론을 추가하고로 변경 하려면 파이프 가 필요합니다 ±HH:MM
.
참고 : Heirloom 프로젝트의 date
명령에는 호환되지 않는 %z
출력이 있습니다. +
부호를 인쇄하지 않습니다 .