我写的命令行程序接受日期作为参数。我需要将这些转换为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时。
答案 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.timegm
和datetime.utctimetuple
,因为这两个函数都将其参数解释为UTC格式,
import calendar
print(calendar.timegm(date.utctimetuple()))
# 1231545600
但请注意date.utctimetuple()
会减少微秒。