将日期解析为utc unixtime

时间:2015-07-18 10:01:05

标签: python-2.7 python-dateutil

我写的命令行程序接受日期作为参数。我需要将这些转换为utc unix时间戳,以供程序内部使用。到目前为止,我有以下测试脚本,但它无法正常工作:

>>> import time
>>> from dateutil import parser
>>> t = parser.parse("2009-01-10")
>>> print int(time.mktime(t.timetuple()))
1231507800

unixtimestamp.com上查看此内容:

  

1231507800

     

相当于:

     

01/09/2009 @ 1:30 pm(UTC)

然而我想在午夜回来。我想我的计算机正在使用我当地的时区,当我想在每个阶段使用utc时。

1 个答案:

答案 0 :(得分:1)

您可以从纪元中减去日期并调用timedelta.total_seconds方法:

import datetime as DT
from dateutil import parser
datestring = "2009-01-10"
date = parser.parse(datestring)
epoch = DT.datetime(1970, 1, 1)
timestamp = (date - epoch).total_seconds()
print(timestamp)

打印

1231545600.0

另一种选择是使用calendar.timegmdatetime.utctimetuple,因为这两个函数都将其参数解释为UTC格式,

import calendar
print(calendar.timegm(date.utctimetuple()))
# 1231545600

但请注意date.utctimetuple()会减少微秒。