저는 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 )
누구든지 나를 초대할 수 있나요?