私は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 )
誰でも私を招待できますか?