簡體   English   中英

在Django應用中訪問時,正確保存的時區感知日期時間對象未顯示時區

[英]Correctly saved timezone aware datetime object appearing timezone unaware when accessed in Django app

在我維護的帶有postgresql后端的Django應用中,用戶登錄並發表評論。 每個評論都有一個與之相關的時間戳。

創建評論對象時,我會執行以下操作:

now = datetime.now()
Comment.objects.create(commenter=self.request.user, when=now, text='text')

now知道時區-即我是UTC +530, now可以正確編碼該信息。 如果我使用psql並查看在Comment postgresql表中創建的條目,則可以看到datetime對象的正確值。

但是,如果我從Django應用程序訪問同一對象,並print出它的日期時間戳,則會看到一個時區未知對象。 即不知道我在UTC +530的日期時間對象。

這完全弄亂了我的邏輯。 如何確保在Django應用程序中獲得與相關的postgresql表中保存的相同的datetime對象? 令人驚訝的是,兩個輸出是不同的,我可能在做一些根本錯誤的事情。 救命!

使用timezone.now()代替datetime.now():

from django.utils import timezone
timezone.now()

要在整個應用程序中全局獲取帶時區或不帶時區的now()(包括PostgreSQL模式更新)。 有無時區取決於USE_TZ設置。

暫無
暫無

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

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