Bash 스크립트에서 시간대를 변경하는 방법은 무엇입니까?

Bash 스크립트에서 시간대를 변경하는 방법은 무엇입니까?

저는 Linux Ubuntu에서 작업 중이며 출력이 내 서버 시간에서 7시간 앞선 시간대 변환인 bash 스크립트를 원합니다.

내 서버 시간:

2017년 7월 23일 월요일 23:00:00

내가 달성하고 싶은 것:

2017년 7월 24일 월요일 06:00:00

내 Bash 스크립트에서 이것을 시도했습니다.

#!/bin/bash

let var=$(date +%H)*3600+$(date +%M)*60+$(date +%S)
seven=25200
time=$(($var+$seven))

date=$(date --date='TZ="UTC+7"' "+%Y-%m-%d")
hours=$(date -d@$time -u +%H:%M:%S)

echo "$date" "$hours"

출력은 다음과 같습니다

2017-07-23 06:00:00

시간은 유효하지만 날짜는 여전히 서버 날짜와 일치합니다. 이 문제를 해결할 다른 방법이 있나요?

답변1

TZ스크립트 초기에 환경 변수를 변경하여 전체 스크립트의 시간대를 변경할 수 있습니다. 단일 명령으로 재정의할 수 있습니다.

예를 들어 이 스크립트

#!/bin/bash
export TZ=Australia/Sydney

date
TZ=US/Pacific date
date

출력됩니다

Sun 30 Jul 21:56:25 AEST 2017
Sun 30 Jul 04:56:25 PDT 2017
Sun 30 Jul 21:56:25 AEST 2017

답변2

질문을 문자 그대로 받아들이면 현재 지역의 현재 시간보다 7시간 뒤처진 날짜 문자열을 얻으려면 다음과 같이 간단합니다.

date -d "7 hours" "+%Y-%m-%d %H:%M:%S"

그러나 실제로 원하는 것이 다른 시간대에서 현지 날짜/시간을 추출하는 것이라면 다른 답변의 조언을 따르는 것이 좋습니다.

답변3

에 나오는 인용문을 보셨나요 man bash? 나는 이와 같은 것이 당신이 찾고 있는 것이라고
믿습니다 . DATE=$( date --date="TZ=\"Asia/Taipei\" $TIME" +%F\ %H:%M )누구든지 나를 초대할 수 있나요?

관련 정보