gpt4 book ai didi

Python 日期时间增量 - 15 分钟?

转载 作者:行者123 更新时间:2023-12-01 04:27:29 40 4
gpt4 key购买 nike

我正在使用 Bottle 框架,我试图设置一个 15 分钟后过期的 cookie,但它从未起作用,我发现问题出在我设置的过期时间上。

我的问题是我无法使用 datetime.timedelta() 将当前时间添加 15 分钟。仅当我提供“days”关键字参数并将其设置为 0 以外的值时,它才有效。

即:

它是这样工作的:

expire_date = datetime.datetime.now()
expire_date = expire_date + datetime.timedelta(days=10, seconds=900)
response.set_cookie("MyCook", "CookieVal", expires=expire_date)

以下不起作用(cookie 未创建或更新):

expire_date = datetime.datetime.now()
expire_date = expire_date + datetime.timedelta(days=0, seconds=900)
response.set_cookie("MyCook", "CookieVal", expires=expire_date)

或者

expire_date = datetime.datetime.now()
expire_date = expire_date + datetime.timedelta(seconds=900)
response.set_cookie("MyCook", "CookieVal", expires=expire_date)

我阅读了文档,但不清楚它到底是如何工作的。

https://docs.python.org/2/library/datetime.html#datetime.timedelta

有人可以帮我解决这个问题吗?提前致谢。

最佳答案

你住在格林威治以西吗?

Bottle 中的 set_cookie 函数期望 UTC 日期时间对象将它们转换为字符串,因此不会考虑您的时区:

参见https://github.com/bottlepy/bottle/blob/master/bottle.py#L1729 :

value = value.timetuple()
....
value = time.strftime("%a, %d %b %Y %H:%M:%S GMT", value)

换句话说,如果您将到期日期设置为上午 11:00,则该日期将为格林威治标准时间上午 11 点。例如,哥斯达黎加的时间为凌晨 3:00。

在过期日期上添加一天或多天(甚至几个小时)可以解决您的问题,因为 expire_date 值变得大于当前 GMT 时间。

解决此问题的正确方法是使用当前 GMT 时间而不是您本地的当前时间:

expire_date = datetime.datetime.utcnow()

关于Python 日期时间增量 - 15 分钟?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32886234/

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