Python 日期时间增量 - 15 分钟?
Python Datetime Delta - 15 minutes?
我正在使用 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:00am,那将是格林威治标准时间上午 11 点。例如,在哥斯达黎加 3:00am。
将到期日期增加一天或多天(甚至几个小时)可以解决您的问题,因为 expire_date
值变得大于当前 GMT 时间。
解决此问题的正确方法是使用当前 GMT 时间而不是您当地的当前时间:
expire_date = datetime.datetime.utcnow()
我正在使用 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:00am,那将是格林威治标准时间上午 11 点。例如,在哥斯达黎加 3:00am。
将到期日期增加一天或多天(甚至几个小时)可以解决您的问题,因为 expire_date
值变得大于当前 GMT 时间。
解决此问题的正确方法是使用当前 GMT 时间而不是您当地的当前时间:
expire_date = datetime.datetime.utcnow()