
파일 이름에서 추출된 날짜/시간 문자열이 있습니다. 타임스탬프가 시간대 A를 사용하여 작성되었다는 것을 알고 있으며 추가 처리를 위해 이를 시간대로 변환해야 합니다. 배쉬에서 이것이 가능합니까?
예:
filenameTimestamp="2015-01-20 18:05:02"
timezoneA="Australia/Sydney"
timezoneB="Australia/Brisbane"
시간대 A를 사용하여 문자열을 구문 분석한 다음 시간대 B를 사용하여 문자열로 다시 출력해야 한다고 가정합니다.
답변1
시드니의 날짜를 미국 로스앤젤레스의 날짜로 해석하려면:
$ sec=$(TZ="Australia/Sydney" date +'%s' -d "2015-05-20 18:05:02")
$ TZ="America/Los_Angeles" date -d "@$sec"
Wed May 20 01:05:02 PDT 2015
브리즈번에 대한 검색결과는 다음과 같습니다.
$ TZ="Australia/Brisbane" date -d "@$sec"
Wed May 20 18:05:02 AEST 2015
작동 원리
TZ="Australia/Sydney" date +'%s' -d "2015-05-20 18:05:02"
이는 일시적으로 시간대를 시드니로 설정하고 날짜 "2015-05-20 18:05:02"를 epoch 이후의 초 단위 시간(UTC)으로 변환합니다.
sec=$(TZ="Australia/Sydney" date +'%s' -d "2015-05-20 18:05:02")
이렇게 하면 epoch(UTC) 이후의 시간(초)이 쉘 변수에 저장됩니다
sec
.TZ="America/Los_Angeles" date -d "@$sec"
이는 일시적으로 시간대를 로스앤젤레스로 설정하고 에서 제공한 날짜를 해석합니다
sec
.