Python конвертирует Django model.datetime из 24 часов в AM/PM?
В Django у меня есть поле модели, которое хранит время в формате YYYY-MM-DD HH:MM:SS, вот как оно создается.
station_0_checked_time = models.DateTimeField(
null = True,
default = datetime.datetime(1970, 1, 1, 0, 0)
)
Данные хранятся правильно, что подтверждается разделом администратора моего Django-сайта.
Station 0 Checked Time:
Date: 1970-01-01
Time: 22:00:10
Однако при попытке получить данные в представлении Django с помощью следующего кода я получаю неправильный вывод
#SUBCARD is the name of the model object
print(SUBCARD.station_0_checked_time)
Expected:
1970-01-01 22:00:10
Actual:
1970-01-02 06:00:10+00:00
Я не очень понимаю преобразование, которое здесь происходит. Спасибо за помощь.
Вы просто должны вручную отформатировать его, когда вам нужно увидеть его в правильном формате
view.py
from datetime import datetime
print(SUBCARD.station_0_checked_time.strftime("%Y-%m-%d %H:%M:%S"))
Шпаргалка по strftime для Python: https://strftime.org/
template.html
{{ SUBCARD.station_0_checked_time|date:'Y-m-d H:i:s' }}
Шаблонные док-ты: https://docs.djangoproject.com/en/4.1/ref/templates/builtins/#date
Вы также можете сделать это методом Модели! - Вероятно, я предпочитаю этот метод, поскольку все находится в одном месте
# models.py
class MyModel(models.Model):
station_0_checked_time = models.DateTimeField()
# other fields
def get_sation_o_checked_time(self):
from datetime import datetime
return self.station_0_checked_time.strftime("%Y-%m-%d %H:%M:%S")
##############################################
# Use in view.py
print(SUBCARD.get_station_0_checked_time())
# Use in template.html
{{ SUBCARD.get_station_0_checked_time }}