인식할 수 없는 형식의 날짜와 시간이 주어지면 해당 날짜와 시간을 date
어떻게 인식할 수 있나요 ?date
예를 들어:
$ date -d "09SEP2012:23:58:46"
date: invalid date `09SEP2012:23:58:46'
$ date -d "09SEP2012:23:58:46" --magic-option "ddMMMYYY:hh:mm:ss"
Sun Sep 9 23:58:46 MDT 2012
존재 합니까 --magic-option
? 그렇지 않다면 sed
입력을 올바른 형식의 날짜 문자열로 변환하는 것보다 이 문제를 해결하는 더 우아한 방법이 있습니까 ?
답변1
POSIX나 GNU Date --magic-option
FreeBSD는 이를 호출하지 않습니다( 제안한 구문이 아닌 출력 형식 지정자와 -f
유사한 구문으로 ).date
귀하의 날짜가 GNU Date에서 인식되는 데 매우 가깝습니다. 해야 할 일은 날짜와 시간을 구분하는 콜론을 공백으로 바꾸는 것뿐입니다.
date -d "$(echo "09SEP2012:23:58:46" | sed 's/:/ /')"
답변2
답변3
이미 설치된 Ubuntu와 같은 환경을 사용하는 경우 다음과 같이 busybox
수행할 수 있습니다 .busybox date -D "$input_format" -d "$input"
$ busybox date -D "%m/%d/%Y %H:%M:%S" -d "02/27/2013 23:48:00"
Wed Feb 27 23:48:00 CST 2013
출력 문자열의 형식을 다음과 같이 지정하려는 경우뭔가 비표준적인 것busybox date -D "$input_format" -d "$input" +"$output_format"
예를 들어 다음을 사용하여 출력 형식을 지정할 수 있습니다 .
$ busybox date -D "%m/%d/%Y" -d "02/27/2013" +"%d.%-m.%y"
27.2.13
그러나 ISO-8601 호환 날짜의 경우 -I
원하는 정밀도 수준을 사용하십시오. 예를 들면 다음과 같습니다.
$ busybox date -D "%m/%d/%Y %H:%M:%S" -d "02/27/2013 23:48:00" -Iseconds
2013-02-27T23:48:00-0600
노트
이것비지박스 매뉴얼 페이지. 이것작동하지 않을 수 있습니다%Z
시간대 형식이 있습니다 .