![Bash에서 날짜 형식 설정](https://linux55.com/image/114462/Bash%EC%97%90%EC%84%9C%20%EB%82%A0%EC%A7%9C%20%ED%98%95%EC%8B%9D%20%EC%84%A4%EC%A0%95.png)
스크립트에서 bash의 날짜 형식을 지정하고 싶습니다.
형식은 다음과 같습니다.2016-10-05T12:18:36.890+02:00
나는 현재 다음을 사용하고 있습니다 :$(date +%Y%m%d%H%M%S)
이 작업을 수행하는 방법을 아시나요?
답변1
당신이 찾고 있는 것은 날짜를 ISO 8601 형식으로 형식화하는 것입니다.
$(date -Is)
I
ISO 형식의 경우 s
날짜 및 시간입니다.
답변2
GNU 사용 date
:
$ date +%FT%T.%3N%:z
2017-06-30T13:00:54.566+01:00
bash
내장 함수를 사용하면 가장 가까운 결과를 얻을 수 있습니다.
$ printf -v date '%(%FT%T%z)T' -1
$ printf '%s\n' "${date%??}:${date: -2}"
2017-06-30T13:00:54+01:00
bash
1초 미만의 정밀도를 지원하지 않습니다 .
최신 버전을 사용하세요 zsh
:
$ zmodload zsh/datetime
$ strftime -s date '%FT%T.%3.%z'
$ printf '%s\n' $date[1,-3]:$date[-2,-1]
2017-06-30T13:00:54.566+01:00
답변3
다음을 시도해 볼 수 있습니다.
date +%Y-%m-%d-T%H:%M:%S%z
답변4
요청한 형식은 다음과 같이 작성할 수 있습니다.
$ date +%Y-%m-%dT%H:%M:%S%z # similar to your previous +%Y%m%d%H%M%S
2016-10-05T11:18:36+0100
$ date +'%FT%T.%3N%:z' # shorter with GNU milliseconds
2016-10-05T11:18:36.247+01:00
$ ( t=$EPOCHREALTIME; u=${t#*.};
printf "%(%FT%T)T.%s%(%z)T\n" "${t%.*}" "${u%???}" ) # Pure bash 5.0+
2016-10-05T11:18:36.450+0100