Python 将时间转换为秒并返回

Python 将时间转换为秒并返回,python,Python,我有一个日期(我想是UTC,但也可能是localtime) 我想把这个日期转换成秒。。。返回(秒-->日期) 因此,在对Stackoverflow进行了一些研究之后,我提出了这两个函数: def UTC_to_sec(utc_time): """ convert time in UTC to seconds. input: s string output: float """ return time.mktime( datetime.dateti

我有一个日期(我想是UTC,但也可能是localtime) 我想把这个日期转换成秒。。。返回(秒-->日期)

因此,在对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-1508:31:00(UTC)-->(1284532260.0)[s]->2010-09-1506:31:00(UTC)

这是否意味着
mydate
是本地时间而不是UTC

我仅在将函数
sec_修改为UTC()
时得到正确的结果,如下所示:

datetime.datetime.utcfromtimestamp(s-time.altzone).strftime('%Y-%m-%d %H:%M:%S')
time.altzone
在我的例子中是-7200[s]。但这是一个令人讨厌的解决办法


我的问题是:是什么使上述日期秒日期转换取决于时区

罪魁祸首是
time.mktime()

发件人:

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


罪魁祸首是
time.mktime()

发件人:

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


哦,真的!这意味着我需要通过添加time.altzone的值来更正mktime的返回值,对吗?哦,非常正确!这意味着我需要通过添加time.altzone的值来更正mktime的返回值,对吗?