[英]Why do a timezone-unaware and a timezone-aware datetime object with a different timezone yield the same unix-timestamp?
[英]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.