Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/361.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将datetime.now()与utc时间戳与python 2.7进行比较_Python_Python 2.7 - Fatal编程技术网

将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")