将时间转换为秒和返回

时间:2013-05-29 12:13:21

标签: python

我有一个约会(我想它是UTC,但也可能是当地时间) 我想将此日期转换为秒...并返回(秒 - >日期)

所以,经过Stackoverflow的一些研究后,我想出了这两个函数:

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]。但这是一个讨厌的解决方法。

我的问题是:上述日期 - 秒 - 日期转换的原因取决于时区?

1 个答案:

答案 0 :(得分:1)

罪魁祸首是time.mktime()

来自the documentation

  

这是localtime()的反函数。它的参数是struct_time或完整的9元组(因为需要dst标志;如果它是未知的,则使用-1作为dst标志),它以当地时间而不是UTC表示时间。