日付があります(UTCだと思いますが、現地時間でもあるかもしれません)この日付を秒に変換したいと思います...そして元に戻します(秒->日付)
そのため、Stackoverflow でいくつかの調査を行った後、次の 2 つの関数を思いつきました。
def UTC_to_sec(utc_time):
"""
convert time in UTC to seconds.
input: s string
output: float
"""
return time.mktime( datetime.datetime.strptime(utc_time, "%Y-%m-%d %H:%M:%S").timetuple() )
def sec_to_UTC(s):
"""
convert time in to seconds to UTC.
input: time in seconds (float)
output: string
"""
return datetime.datetime.utcfromtimestamp(s).strftime('%Y-%m-%d %H:%M:%S')
# test with mydate="2010-09-15 08:31:00"
print "time ", mydate, " (UTC) --> (",UTC_to_sec(maydate), ") [s] --> ",sec_to_UTC(UTC_to_sec(mydate)), " (UTC)"
結果は次のとおりです。
時刻 2010-09-15 08 :31:00 (UTC) --> (1284532260.0) [s] --> 2010-09-15 06 :31:00 (UTC)
mydate
これは、UTC ではなく現地時間であったことを意味しますか?
次のように関数を変更すると、正しい結果が得sec_to_UTC()
られます。
datetime.datetime.utcfromtimestamp(s-time.altzone).strftime('%Y-%m-%d %H:%M:%S')
time.altzone
私の場合は -7200 [s] です。しかし、これは厄介な回避策です。
私の質問は: 前述の日付 - 秒 - 日付の変換がタイムゾーンに依存する理由は何ですか?