簡體   English   中英

在Django中同時使用天真和時區感知日期時間

[英]Using both naive and timezone aware datetimes in Django

Django文檔非常清楚,不應該使用幼稚的日期時間,但是我有一個用例,我認為在我認為需要它們的地方相當普遍。 有時,在我的項目中,有必要跨時區查詢對象,但要基於本地時間。

例如,這只是一個人為的例子,假設我想查找所有在給定日期的下午4點至5點之間最后一次更新其個人資料的用戶,具體取決於每個用戶的本地時區 我可以這樣做:

qs = User.objects.filter(profile__datelastupdated__gte=datetime(2013,4,1,16))
qs = qs.filter(profile__datelastupdated__lte=datetime(2013,4,1,17))

但是,由於我啟用了時區支持,因此會引起警告:

RuntimeWarning: DateTimeField received a naive datetime (YYYY-MM-DD HH:MM:SS) while time zone support is active.

我知道為什么會發出警告,所以我的問題是:我不是在考慮正確的日期時間嗎? 是否有一種idomatic Django方式,可以在需要時具有tz感知日期時間的特異性,並且還具有幼稚的日期時間有時需要的所需通用性?

您必須使用datetime + timezone過濾數據庫,數據庫中的所有日期始終存儲為utc。 如果您提供的日期沒有時區django,則將其默認為utc並給您帶來交戰感。
如果支持時區,則必須存儲用戶時區。 詢問具有日期+當前用戶時區的數據庫與放置日期相同。

暫無
暫無

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

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