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

おすすめ記事