如何使用Django timezone.override创建带tzinfo的datetime对象?
Django中简洁创建带时区datetime对象的方法
直接构造UTC时区对象
要创建指定时间的UTC时区datetime,无需繁琐的timezone.make_aware,直接在构造datetime时传入tzinfo=timezone.utc即可:from datetime import datetime from django.utils import timezone dt = datetime(2012, 1, 1, tzinfo=timezone.utc)生成的对象自带正确的UTC时区信息,完全符合Django的时区要求。
关于
timezone.override无效的原因timezone.override仅用于临时修改Django的全局时区设置,不会改变Python标准库datetime类的行为。datetime.now()始终生成**无时区信息(naive)**的本地时间,不受Django时区配置影响。其他场景的简化方案
- 获取当前UTC时间:直接调用
timezone.now(),返回带UTC时区的datetime对象。 - 创建非UTC时区的时间:可以用
timezone.get_current_timezone()获取Django当前时区,传入datetime的tzinfo参数;或者使用timezone.make_aware(datetime(...), timezone=目标时区),这种方式对非UTC时区更安全,避免手动设置tzinfo可能出现的问题。
- 获取当前UTC时间:直接调用
内容的提问来源于stack exchange,提问作者boatcoder
相关产品推荐
相关产品推荐

