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 }}
Вернуться на верх