programing

OS X의 'date' 명령어에는 ISO 8601 '-I' 옵션이 없습니다.

mbctv 2023. 4. 16. 15:36
반응형

OS X의 'date' 명령어에는 ISO 8601 '-I' 옵션이 없습니다.

Bash 스크립트에서 현재 날짜/시간을 ISO 8601 형식(가급적이면 UTC)으로 인쇄하고 싶습니다.이 작업은 다음과 같이 단순해야 합니다.date -I:

http://ss64.com/bash/date.html

하지만 Mac에서는 작동하지 않는 것 같습니다.

$ date -I
date: illegal option -- I
usage: date [-jnu] [-d dst] [-r seconds] [-t west] [-v[+|-]val[ymwdHMS]] ... 
            [-f fmt date | [[[mm]dd]HH]MM[[cc]yy][.ss]] [+format]

그리고 사실,man date에는 이 옵션이 표시되지 않습니다.

ISO 8601 형식으로 날짜를 인쇄할 수 있는 다른 (간단한) 방법을 알고 계신 분?감사합니다!

사용할 수 있습니다.

date "+%Y-%m-%d"

또는 ISO-8601을 완전히 준수하는 날짜의 경우 다음 형식 중 하나를 사용하십시오.

date -u +"%Y-%m-%dT%H:%M:%SZ"

출력:

2011-08-27T23:22:37Z

또는

date +%Y-%m-%dT%H:%M:%S%z

출력:

2011-08-27T15:22:37-0800

GNU 날짜date -I와 같다date +%F,그리고.-Iseconds그리고.-IminutesUTC 오프셋이 있는 시간도 포함합니다.

$ date +%F # -I or +%Y-%m-%d
2013-05-03
$ date +%FT%T%z # -Iseconds or +%Y-%m-%dT%H:%M:%S%z
2013-05-03T15:59:24+0300
$ date +%FT%H:%M # -Iminutes or +%Y-%m-%dT%H:%M%z
2013-05-03T15:59+0300

-u~와 같다TZ=UTC.+00:00로 대체할 수 있다Z.

$ date -u +%FT%TZ
2013-05-03T12:59:24Z

ISO 8601 날짜 또는 시간 형식도 사용할 수 있습니다.

20130503T15 (%Y%m%dT%M)
2013-05 (%Y%m)
2013-W18 (%Y-W%V)
2013-W18-5 (%Y-W%V-%u)
2013W185 (%YW%V%u)
2013-123 (%Y-%j, ordinal date)
2013 (%Y)
1559 (%H%M)
15 (%H)
15:59:24+03 (UTC offset doesn't have to include minutes)

다음 항목은 아닙니다.

2013-05-03 15:59 (T is required in the extended format)
201305 (it could be confused with the YYMMDD format)
20130503T15:59 (basic and exteded formats can't be mixed)

GNU와 BSD 날짜 모두에 사용할 수 있는 짧은 대체 방법은 다음과 같습니다.

date -u +%FT%T%z

coreutils 패키지는 GNU 버전의 도구를 제공합니다.설치하는 방법:

$ brew install coreutils

제공되는 내용을 볼 수 있습니다.

$ brew list coreutils

날짜는 다음과 같습니다.

$ brew list coreutils | grep date

이것은 표준 GNU 날짜 명령어이므로 -I 스위치를 사용합니다.

$ gdate -I
2016-08-09

그냥 일반 사용date포맷 옵션:

date '+%Y-%m-%d'

편집: 시간과 UTC를 포함하면 다음과 같습니다.

date -u -Iseconds

date -u '+%Y-%m-%dT%k:%M:%S%z'

다른 답변을 한 단계 더 진행하면 ~/.bashrc 또는 ~/.zshrc에 함수를 추가하여 날짜를 추가할 수 있습니다.-I플래그:

date() {
  if [ "$1" = "-I" ]; then
    command date "+%Y-%m-%dT%H:%M:%S%z"
  else
  command date "$@"
  fi
}

이건 Bash의 특징이 아니라date바이너리Linux 에서는 일반적으로 GNU coreutils 버전이 있습니다.date단, OSX에서는 BSD 레거시 유틸리티를 사용할 수 있습니다.GNU 버전은 옵션 패키지로 설치할 수 있습니다.또한 교환품을 롤링할 수도 있습니다.Perl에서는 간단한 원라이너로 해야 한다고 생각합니다.

미리 컴파일된 것이 있습니다.coreutilsMac OS X용 패키지는 다음 사이트에서 구할 수 있습니다.

http://rudix.org/packages-abc.html#coreutils 를 참조해 주세요.

파일을 저장할 때 Linux에서 "date - I"를 사용합니다.ex: x를 누릅니다.date -IMacOS는 'date +%F'이지만 파일을 저장할 때마다 입력하는 것은 조금 어색합니다.그래서 에일리어스 "det='date +%F'"를 설정하고 x를 터치합니다.dt날짜를 알려줘요

언급URL : https://stackoverflow.com/questions/7216358/date-command-on-os-x-doesnt-have-iso-8601-i-option

반응형