strftime을 사용하여 날짜/시간을 UTC로 형식 지정(git용)

strftime을 사용하여 날짜/시간을 UTC로 형식 지정(git용)

내가 정말로 원하는 것은 UTC의 날짜/시간을 유연하게사용하여 날짜와 시간의 형식을 지정할 strftime수 있습니다 . (이 예에서는 .) 이것이 작동할까요 ?'%Y %m %d-%H:%M:%S%z'2022 02 14 16:21:35-08002022 02 15 00:21:35strftime

(컨텍스트: 가짜 버전과 일치하는 형식을 얻으려고 합니다 git log --date=format. 사용자 정의 형식을 정의하는 옵션은 시스템에 위임됩니다. 저는 Mac OSX Monterey에 있고 bash를 사용하고 있습니다. 편집: 솔루션은 조금 더 복잡합니다. git에서 사용; 이를 반영하기 위해 문제 설명이 변경되었습니다.go.mod--date=format:'%foo%bar'strftime

답변1

C 함수는 strftime()날짜/시간 형식만 지정합니다. gmtime()UTC 시간이나 현지 시간을 가져온 localtime()결과를 전달할 수 있습니다 .

date기본적으로 현지 시간이 표시되지만 이 옵션을 사용하면 UTC 시간이 표시된다는 것을 나타낼 수 있습니다 -u.

localtime()time()지정된 시간대에 대한 환경 변수의 내용을 기반으로 지정된 에포크 시간(반환된 대로)에 대한 현지 시간을 계산합니다 $TZ. 이 변수가 정의되지 않으면 시스템마다 동작이 달라집니다.

도구가 항상 현지 시간을 표시하고 세계 시간으로 전환하라는 지시를 받을 수 없는 경우 $TZUTC에서 시간대 오프셋을 지정하는 환경에서 항상 도구를 호출할 수 있습니다.

TZ=UTC0 date

다음과 같은 효과가 있습니다.

date -u

TZ=UTC0UTCUTC에서 0의 오프셋을 갖는 로캘이 정의되어 있으므로 UTC 시간과 date +%Z주어진 "UTC"를 얻을 수 있으므로 해당 값을 사용하면 다음과 $TZ같이 localtime()작동합니다 gmtime().

gits 의 경우 날짜가 커밋에 저장된 시간대가 아닌 현지 시간으로 표시되도록 --date=format추가해야 합니다 . -local그래서:

TZ=UTC0 git log --date=format-local:'%Y %m %d-%T'

관련 정보