[英]Django: How to make a datetime object aware of the timezone in which it was created?
[英]How can I make django model datetime field data of midnight and timezone aware?
我試圖在我的Django模型中將expire_time
設置為用戶選擇的日期的午夜,並且知道時區。 但是我無法正確獲取它。 誰能告訴我我該怎么做或我在代碼中哪里出錯了?
我的密碼是
date = datetime.strptime(str(request.POST.get('expire') + ', 23:59:59'),
'%Y-%m-%d, %H:%M:%S')
tz = timezone.get_current_timezone()
date_tz = tz.localize(date)
createEventInDB.ev_expire = date_tz
try:
createEventInDB.save()
except Exception as e:
error = e
因此,如果我選擇的日期是2015年12月1日,則它將發布為2015-12-1
我想將數據保存在2015-12-01 23:59:59
這樣的數據庫中。 我想整天給用戶。 我當前的時區是美國/芝加哥。 我已通過ip設置了活動時區。 因此,我想讓用戶可以在任何地方發布信息,但時區必須是UTC感知的並且在午夜到期。 誰能告訴我如何實現?
基於https://docs.djangoproject.com/zh-CN/1.8/topics/i18n/timezones/上的文檔
啟用對時區的支持后,Django會將日期時間信息存儲在數據庫中的UTC中,在內部使用可識別時區的datetime對象,並將其以模板和形式轉換為最終用戶的時區。
因此,這完全是不必要的,您所需要做的就是像models.DateTimeField
一樣使用models.DateTimeField
。
您可以在視圖或表單中定義一個Date
小部件,然后在保存之前將DateTimeField
Time
更改為23:59:59(或者可以將其作為默認值提供),並且Django將在保存之前自動將其轉換為UTC。
我想做的是2015-12-01 23:59:59 UTC
問題中的代碼在當前時區返回23:59:59
。
如果給定了相應的UTC日期,則返回“ 23:59:59 UTC”更為簡單:
from datetime import datetime
import pytz
ev_expire = datetime(utc_date.year, utc_date.month, utc_date.day, 23, 59, 59,
tzinfo=pytz.utc)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.