RFC-3339는 모든 곳에서 사용되는 현대적이고 널리 사용되는 사운드 형식이기 때문에 이 date
명령은 그러한 기능을 제공하지 않습니다(현대적이지도 않고 건전하지도 않은 이메일 제외).
내 시간대 오프셋은 현재 -08:00이므로 이 명령의 가장 간단한 형식은 현재 시간을 로 인쇄해야 합니다 2013-09-05T14:58:33.102-08:00
.
답변1
date
여러 형식을 처리하기 위해 GNU 구현(버전 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
인용하다
답변2
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 사양은 1초 미만의 세분성으로 시간을 표시할 수 있는 명령을 지정하지 않지만 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
답변3
형식에 따라 시간을 설정할 수도 있습니다.RFC3339(ISO8601)더 쉬움:
$ date -u +"%Y-%m-%dT%H:%M:%SZ"
2016-11-08T08:52:55Z
노트:이 형식은 다음에도 사용됩니다.태그 모드 컨벤션 RC 1.0
답변4
GNU date
에는 ISO-8601 형식이 내장되어 있습니다. 이는 RFC-3339와 매우 가깝거나 동일하지 않습니까?
1065 % date --iso-8601=seconds
2014-03-19T16:51:16-0600