0

我正在尝试在我的表单错误消息中添加日期时间。不幸的是,它以 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()将日期时间对象转换为当前时区?

4

1 回答 1

1

我可以使用:

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

于 2019-01-29T14:17:23.110 回答