将日期解析为 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()
下降微秒。
我正在编写的命令行程序接受日期作为参数。我需要将这些转换为 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()
下降微秒。