我正在尝试将日期时间添加到表单错误消息中。不幸的是,它以UTC(我的TIME_ZONE)呈现,但是应该在当前时区。
def clean(self):
# print(get_current_timezone()) > Europe/Berlin
cleaned_data = super(LegForm, self).clean()
departure_scheduled = cleaned_data.get('departure_scheduled')
# check departure in journey
if departure_scheduled < self.instance.journey.start:
journey_start = localize(self.instance.journey.start)
# print(self.instance.journey.start.tzinfo) > UTC
self.add_error(
'departure_scheduled',
_('Error Message (%(start)s).') % {'start': journey_start}
)
print(get_current_timezone())
返回Europe/Berlin
print(self.instance.journey.start.tzinfo)
返回UTC
当前时区已激活。是否有等于localize()
的对象将datetime对象转换为当前时区?
答案 0 :(得分:0)
我可以使用:
journey_start = localize(self.instance.journey.start.astimezone(get_current_timezone()))
但是感觉就像在争夺Django的时区支持。
更新:
感谢凯文·克里斯托弗·亨利(Kevin Christopher Henry)的评论,这是我正在寻找的Django工具:
from django.utils import timezone
journey_start = timezone.localtime(self.instance.journey.start)
https://docs.djangoproject.com/en/dev/topics/i18n/timezones/#usage