簡體   English   中英

Python日期時間增量-15分鍾?

[英]Python Datetime Delta - 15 minutes?

我使用的是Bottle框架,我試圖設置一個Cookie,該Cookie將在15分鍾后過期,但它從未起作用,並且我發現問題出在我設置的過期時間上。

我的問題是我無法使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()

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM