将datetime.now()与utc时间戳与python 2.7进行比较
我有一个时间戳,将datetime.now()与utc时间戳与python 2.7进行比较,python,python-2.7,Python,Python 2.7,我有一个时间戳,1474398821633L,我认为是utc的。我想将它与datetime.datetime.now()进行比较,以验证它是否过期 我正在使用python 2.7 from datetime import datetime timestamp = 1474398821633L now = datetime.now() if datetime.utcfromtimestamp(timestamp) < now: print "timestamp expired"
1474398821633L
,我认为是utc的。我想将它与datetime.datetime.now()进行比较,以验证它是否过期
我正在使用python 2.7
from datetime import datetime
timestamp = 1474398821633L
now = datetime.now()
if datetime.utcfromtimestamp(timestamp) < now:
print "timestamp expired"
从日期时间导入日期时间
时间戳=1474398821633L
now=datetime.now()
如果datetime.utcfromtimestamp(timestamp)<现在:
打印“时间戳已过期”
但是,我在尝试从timestamp:ValueError:timestamp超出了platform localtime()/gmtime()函数的范围时遇到了这个错误
我能做什么?看起来您的时间戳是以毫秒为单位的。Python使用以秒为单位的时间戳:
>>> datetime.datetime.utcfromtimestamp(1474398821.633)
datetime.datetime(2016, 9, 20, 19, 13, 41, 633000)
换句话说,您可能需要将时间戳除以1000。
,以使其处于正确的范围内
另外,您可能需要比较datetime.utcnow()
而不是datetime.now()
,以确保正确处理时区:-)。时间戳看起来是以毫秒为单位的。Python使用以秒为单位的时间戳:
>>> datetime.datetime.utcfromtimestamp(1474398821.633)
datetime.datetime(2016, 9, 20, 19, 13, 41, 633000)
换句话说,您可能需要将时间戳除以1000。
,以使其处于正确的范围内
此外,您可能需要比较datetime.utcnow()
而不是datetime.now()
,以确保正确处理时区:-)。,因为您的输入可能是“毫秒”,而不是“纪元后的秒数”
使用time.time()
而不是datetime.now()
:
如果需要datetime
,请使用datetime.utcnow()
而不是datetime.now()
。不要将作为原始日期时间对象返回本地时间的.now()
与作为原始日期时间对象返回UTC时间的utcfromtimestamp()
进行比较(这就像直接比较摄氏度和华氏度:您应该先转换为相同的单位)
请参阅。中的更多详细信息,因为您的输入可能是“毫秒”,而不是“从纪元开始的秒数”
使用time.time()
而不是datetime.now()
:
如果需要datetime
,请使用datetime.utcnow()
而不是datetime.now()
。不要将作为原始日期时间对象返回本地时间的.now()
与作为原始日期时间对象返回UTC时间的utcfromtimestamp()
进行比较(这就像直接比较摄氏度和华氏度:您应该先转换为相同的单位)
更多详细信息请参见。@下面的数据——我猜是:-)。我所知道的其他一些语言往往以毫秒为单位工作(例如Javascript),因此,如果时间戳是毫秒时间戳而不是秒时间戳,则时间戳超出范围似乎是很自然的。将其解释为毫秒是不够的。OP应该使用UTC时间,而不是datetime.now()返回的本地时间。
@BelowtheRadar--我猜是:-)。我所知道的其他一些语言往往以毫秒为单位工作(例如Javascript),因此,如果时间戳是毫秒时间戳而不是秒时间戳,则时间戳超出范围似乎是很自然的。将其解释为毫秒是不够的。OP应该使用UTC时间,而不是datetime.now()返回的本地时间。
from datetime import datetime
now = datetime.utcnow()
then = datetime.utcfromtimestamp(timestamp_in_millis * 1e-3)
if now > then:
print("expired")