RFC-3339 형식으로 날짜를 인쇄하는 표준 명령은 무엇입니까?

RFC-3339 형식으로 날짜를 인쇄하는 표준 명령은 무엇입니까?

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은 %zTZ 오프셋을 로 표시하는 것을 지원하므로 -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

관련 정보