날짜를 사용하여 날짜를 YYYYMMDDHHMM 형식으로 변환할 수 있나요?

날짜를 사용하여 날짜를 YYYYMMDDHHMM 형식으로 변환할 수 있나요?

내 날짜 형식은 YYYYMMDDHHMM입니다. 예를 들어, 이 유틸리티를 사용하여 타임스탬프 형식을 지정할 수 있는 방법이 있습니까 201607131001?10:01 AM July 13, 2016date

답변1

GNU 날짜가 있다고 가정하면 날짜와 시간 사이에 공백을 추가하고 통과해야 합니다.-d

$ date -d "20160713 1001"
Wed Jul 13 10:01:00 EDT 2016

매개변수 확장을 통해 이를 쉽게 수행할 수 있습니다. 예를 들어

$ d=201607131001
$ date -d "${d%????} ${d#????????}"
Wed Jul 13 10:01:00 EDT 2016

그런 다음 표준 +형식 문자열을 사용하여 원하는 방식으로 형식을 지정할 수 있습니다( man date모든 옵션 설명).

$ d=201607131001
$ date -d "${d%????} ${d#????????}" +"%I:%M %p %B %d, %Y"
10:01 AM July 13, 2016

답변2

그리고 zsh:

zmodload zsh/datetime
strftime -s t -r %Y%m%d%H%M 201607131001
LC_ALL=C strftime '%I:%M %p %B %d, %Y' $t

비지박스 사용 date:

date -D %Y%m%d%H%M -d 201607131001 +'%I:%M %p %B %d, %Y'

AT&T ast-open 사용 date:

date -p %Y%m%d%H%M -d 201607131001 +'%I:%M %p %B %d, %Y'

BSD 사용 date:

date -jf %Y%m%d%H%M +'%I:%M %p %B %d, %Y' 201607131001

그리고 ksh93:

printf '%(%I:%M %p %B %d, %Y)T\n' 201607131001

관련 정보