将日期解析为 utc unixtime

parse a date to utc unixtime

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

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

unixtimestamp.com 上检查:

1231507800

Is equivalent to:

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

不过我想在午夜时分回来。当我想在每个阶段使用 utc 时,我认为我的计算机正在使用我的本地时区。

您可以从纪元中减去日期并调用 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 and datetime.utctimetuple 因为这两个函数都将它们的参数解释为 UTC,

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

但请注意 date.utctimetuple() 下降微秒。