date
명령은 이러한 기능을 제공하지 않습니다. RFC-3339가 모든 곳에서 사용되는 현대적이고 널리 퍼진 정상 형식 (현대 적이지도 정상적이지 않은 이메일 제외).
제 시간대 오프셋은 현재 -08 : 00이므로이 명령의 가장 간단한 형식은 현재 시간을 2013-09-05T14:58:33.102-08:00
.
댓글
답변
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
참조
댓글
- 요즘에는 ' T '.
--iso-8601' option accepts the same arguments as
-rfc-3339`이며, ' T '를 포함합니다. 출력. - Sed 부분
s/\(\....\).*-/\1-/g
는 대서양 동쪽에서도 작동하려면s/\(\....\).*\([+-]\)/\1\2/g
여야합니다. - @svante-세부 사항을 수정 해 주셔서 감사합니다.
- @Eonil 실제로 정확하지 않지만 RFC3339는 다음과 같이 말합니다.
NOTE: ISO 8601 defines date and time separated by "T".
RFC3339를 사용하면 대신 공간. ietf.org/rfc/rfc3339.txt 섹션 5.6 - @ rwenz3l 내 잘못입니다. 방금 ABNF 부분 만 읽고 메모를 놓쳤습니다. 지적 해 주셔서 감사합니다!
답변
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은 TZ 오프셋을 iv id로 표시하기 위해 %z
를 지원합니다. = “20a537d531″>
, 가장 휴대 성이 높은 제품은 다음과 같습니다.
$ 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
답변
RFC3339 (ISO8601) 에 따라 더 쉽게 시간 형식을 지정할 수도 있습니다.
$ date -u +"%Y-%m-%dT%H:%M:%SZ" 2016-11-08T08:52:55Z
참고 : 이 양식 at은 라벨 스키마 규칙 RC 1.0
댓글
- 에서도 사용됩니다. '은 유효한 RFC3339가 아닙니다. “`date + % Y- % m- % dT % T % z“`에 대한 Eran '의 대답은 정확하고 문자 수가 적습니다. UTC 통과 -u 플래그를 사용하면 시간대 오프셋이 0이됩니다.
-
-u
플래그를 사용하면이 대답이 맞습니까? - @briceburg 이것이 유효한 RFC3339가 아닌 이유는 무엇입니까? tools.ietf.org/html/rfc3339#section-5.6 에 따르면 제가 알 수있는 한 정확한 것 같습니다.
Answer
GNU date
에는 ISO-8601 형식이 내장되어 있습니다. RFC-3339에 매우 가깝거나 심지어 동일합니까?
1065 % date --iso-8601=seconds 2014-03-19T16:51:16-0600
댓글
- ISO-8601은 날짜와 시간의 형식을 지정하지만 OP는 W3C Date 형식 " 완전한 날짜와 시간, 분, 초 및 초의 소수 YYYY-MM-DDThh : mm : ss.sTZD (예 : 1997-07-16T19 : 20 : 30.45 + 01 : 00) " – W3C 날짜 및 시간 형식 .
답변
좋아요 :
$ date +%Y-%m-%dT%T%z 2015-10-29T14:47:06+0200
댓글
- 시간대 정보는 어디에 있습니까?
- Mac과 Linux 모두에서 작동합니다. ' 날짜 '
- 밀리 초는 어떻습니까?
- 여기에서 빠른 메모입니다. RFC를 열지 않고 시간대 세그먼트
0200
에 콜론이 누락되어 콜론이 필요한 일부 시스템이 손상 될 수 있습니다. - @MikeMackintosh '의 메모는 적절합니다. 여기에 표시된 출력은 법적 RFC 3339 날짜가 아닙니다 . 시간대 세그먼트의 콜론은 RFC 3339에 필요합니다. tools.ietf.org/html/rfc3339#section-5.6 에서
time-numoffset
의 정의를 참조하세요.
답변
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"
이러한 명령은 POSIX와 호환됩니다. %z
변환 사양입니다. 그러나 %z
는 광범위하게 지원되며 Linux, MacOS, FreeBSD, OpenBSD, NetBSD, DragonFlyBSD, Solaris, Minix 및 Haiku에서 동일한 방식으로 작동합니다. 또한 Busybox, Toybox 및 sbase (suckless.org 기본 시스템 유틸리티)의 도구와 함께 작동합니다. %z
는 시간대 오프셋을 ±HHMM
형식으로 출력하므로 추가하려면 sed
파이프가 필요합니다. 콜론을 입력하고 ±HH:MM
로 변경합니다.
참고 : Heirloom 프로젝트의 date
명령은 호환되지 않는 %z
출력 : +
기호를 인쇄하지 않습니다.
2013-09-05 14:58:33.102 -0800
를 사용해야합니다. 공백을 전혀 사용해서는 안되는 몇 가지 이유입니다.