날짜 변환 문제

날짜 변환 문제

타임스탬프가 CST라서 기존 시간에 1시간을 추가해서 EST로 변환하려고 했는데요.

out_date3=$(ls -lrt out.log | awk '{print $8}')

출력은 08:45입니다.

out_date4=$(out_date3 + 01:00)

출력이 09:45가 되기를 원하지만 out_date4가 작동하지 않습니다.

답변1

미국 중부 및 동부 시간대를 사용하고 GNU 날짜가 있다고 가정합니다.

TZ=US/Eastern date --date='TZ="US/Central" 08:45'

"외부"(첫 번째) TZ 환경 변수는 날짜가 미국/동부 시간대에서 작동해야 함을 알려줍니다. 이는 date입력이 처리된 후 시간 인쇄에 영향을 미칩니다. 그런 다음 지정된 시간을 사용하십시오.GNU 날짜의 시간대 규칙, 시간대 주변에는 큰따옴표가 필요합니다. 여기 사양에서는 --date미국/중부 시간대의 08:45 시간을 인쇄하려고 한다고 나와 있습니다.

코드에 대한 가장 짧은 수정은 다음과 같습니다.

out_date4=$(TZ=US/Eastern date --date='TZ="US/Central" '"$out_date3")

노트

lsout.log가 6개월 이상 전에 마지막으로 수정되면 구문 분석된 출력이 중단됩니다. 출력의 시간 형식이 ls"월일 시:분"에서 "월일 연도"로 전환되고 갑자기 awk 문이 전송됩니다.년도out_date3 변수의 시간과 분 대신!

더 유연하게, 다시 GNU 유틸리티를 가정하면 stat명령을 사용하여 마지막 수정 시간을 검색하고 date변환하도록 요청합니다.

out_date3=$(stat -c %Y out.log)
out_date4=$(TZ=US/Eastern date --date @"$out_date3")

이 시점에서 out_date3 변수에는 이미 out.log의 마지막 수정 시간(초)이 포함되어 있습니다. 다양한 형식으로 인쇄하고 싶다면 date다음과 같이 해주세요.

date --date @"$out_date3"
date +'%H:%M:%S' --date @"$out_date3"

관련 정보