秒でbash UTC日付を取得することができないようです。私はシドニーにいるので+ UTC 10時間
date
Thu Jul 3 17:28:19 WST 2014
date -u
Thu Jul 3 07:28:20 UTC 2014
しかし、変換しようとすると、UTC時間ではない同じ結果が得られます
date +%s
1404372514
date -u +%s
1404372515
ここで何が欠けていますか?
date +%s
がUTC時間を返しているという回答を得た後、現在直面している問題の詳細を以下に示します。
ファイルに書かれた日付とpythonを比較しようとしています。この日付はUTC時間で秒単位で書き込まれます。そして、bash date +%s
は私に同じものを与えません。実際、python time.asctime(time.localtime(date_in_seconds_from_bash))
で実行している場合、UTCではなくシドニーの現在時刻を取得します。分かりません。
+%s
はエポックからの秒数だと思います。タイムゾーンは不変です。
これが結果として意図されたものであるに違いない。
$ date -u --date=@1404372514
Thu Jul 3 07:28:34 UTC 2014
あなたが使用していると言います:
time.asctime(time.localtime(date_in_seconds_from_bash))
ここで、date_in_seconds_from_bash
はおそらくdate +%s
の出力です。
time.localtime
関数は、その名前が示すとおり、ローカル時間を提供します。
UTCが必要な場合は、time.gmtime()
ではなくtime.localtime()
を使用します。
JamesNoonan33の答え が示すように、date +%s
の出力はタイムゾーン不変であるため、date +%s
はdate -u %s
とまったく同じです。 「エポック」からの秒数、つまり1970-01-01 00:00:00 UTC
を出力します。質問で表示される出力は、それと完全に一致しています。
date -u
Thu Jul 3 07:28:20 UTC 2014
date +%s
1404372514 # 14 seconds after "date -u" command
date -u +%s
1404372515 # 15 seconds after "date -u" command
現在の時刻とエポックからの秒数の両方として現在のUTCをすばやく取得するために、この行を~/.bash_profile
(または similar )に追加することを検討できます。
alias utc='date -u && date -u +%s'