gpt4 book ai didi

Python 不存在时间错误

转载 作者:行者123 更新时间:2023-12-02 06:35:01 29 4
gpt4 key购买 nike

我正在创建一个使用访问 token 的简单 Django API。这个想法是,当用户请求 token 时,该 token 在接下来的 7 小时内有效。

但是,在生成 token 时,我收到一个 Python NonExistentTimeError。代码是:

 #Django view
...
expires = datetime.datetime.now() + datetime.timedelta(hours=7)

token = APIMasterToken.objects.create(
token=token,
expiration_date=expires
)

但是,我在生成带有所述日期的 token 时遇到异常:

NonExistentTimeError at /api/obtain_master_token/
2013-03-10 02:05:12.179508

这个错误是什么意思以及如何解决它?

编辑:我刚刚阅读了文档,当 DST 之后的某一天时钟发生变化时,就会出现此错误。但是,我不知道如何解决这个问题。 timedelta 函数不应该解决这个问题吗?

最佳答案

Django 希望与 timezone aware datetime objects 合作.

根据 Django 文档,now() 调用将变为:

import datetime
from django.utils.timezone import utc

now = datetime.datetime.utcnow().replace(tzinfo=utc)
expires = now + datetime.timedelta(hours=7)

更好的是,使用 django.utils.timezone 中的 now() 函数。

datetime.now()datetime.utcnow() 都返回简单的 datetime 对象,这不是 Django 所需要的。将时区应用于expires后,Django 就能够转换回 UTC,以便在数据库后端以 UTC 形式存储。

NonExistentTimeError 实际上是由 pytz 模块中的代码引发的。 pytz documentation绝对值得一读,因为处理时区时有很多陷阱。

关于Python 不存在时间错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15317803/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com