Почему время по-прежнему отображается с часовым поясом UTC, а не с настройками. TIME_ZONE? - PullRequest
0 голосов
/ 30 сентября 2018

У меня есть модель, которая показывает короткую строку в __str__() методе модели

def __str__(self):
    return "Scheduled at %s" % (self.date_time.strftime("%B %d %Y %I:%M %p"))
    #Output: <Task: Scheduled at September 30 2018 12:30 AM>
    # it should have been: <Task: Scheduled at September 29 2018 08:30 PM>

Когда я иду к администратору Django , я вижу в заголовке Задача: Запланировано на 30 сентября 2018 года в 12:30 и на входе заполнено правильными настройками TIME_ZONE: 20: 30: 00

.py

TIME_ZONE = 'Etc/GMT+4'

USE_I18N = False

USE_L10N = False

USE_TZ = True

Он продолжает показывать время с часовым поясом UTC, однако я установил TIME_ZONE='Etc/GMT+4 в своих настройках.

Я хочу, чтобы данные времени были сохранены в базе данных как UTCи показать их с TIME_ZONE, в моем случае Etc/GTM+4

1 Ответ

0 голосов
/ 30 сентября 2018

Django преобразует время и дату, когда отображает значения с помощью шаблонов .Если вы хотите выполнить преобразование в произвольных блоках кода, используйте помощник localtime():

from django.utils.timezone import localtime

def __str__(self):
    return "Scheduled at %s" % localtime(self.date_time).strftime("%B %d %Y %I:%M %p")
...