2017-02-08 4 views
2

У меня возникли проблемы с пониманием того, как использовать объекты datetime в django db.информация о времени и времени datetime в шаблонах django

Я хранил datetime.now() в DateTimeField, но проблема с его отображением читаемым способом. В настоящее время отображается время UTC.

Должен ли я хранить часовой пояс с полем datetimefield или должен ли я всегда преобразовывать его в свой часовой пояс во время запросов и просмотров шаблонов?

Это настолько сложно, что я должен делать это совершенно неправильно.

Как отобразить время в часовом поясе в часовом поясе в шаблоне, если это так?

спасибо.

<tbody> 
    {% for session in session_list %} 
     <tr></tr><td>{{session.date}}</td><td>{{session.email}}</td><td>{{session.userData}}</td></tr> 
    {% endfor %} 

</tbody> 
+0

Сохранение даты + времени полей в базе данных в формате UTC рекомендуется использовать, так как UTC однозначна. Вероятно, вы захотите найти способ отображения времени в часовом поясе * пользователя *, а не в своем собственном. –

ответ

1

*) Вы можете включить или отключить преобразование осведомленные объектов DateTime с использованием шаблонов тегов:

{% load tz %} 

{% localtime on %} 
    {{ value }} 
{% endlocaltime %} 

{% localtime off %} 
    {{ value }} 
{% endlocaltime %} 

*) В setting.py, вы можете настроить TIME_ZONE и USE_TZ

магазин даты и времени времени UTC (ниже цитаты с сайта Django):

по-прежнему хорошая практика хранения данных в UTC в вашей базе данных. Основная причина - переход на летнее время (DST). Во многих странах существует система DST, где осенью осенью весной и осенью часы продвигаются вперед. Если вы работаете в местное время, вы, вероятно, столкнетесь с ошибками два раза в год, когда происходят переходы. (Документация pytz более подробно рассматривает эти проблемы.) Это, вероятно, не имеет значения для вашего блога, но это проблема, если вы завышаете счет или недоговариваете своих клиентов на один час, два раза в год, каждый год. Решение этой проблемы - использовать UTC в коде и использовать локальное время только при взаимодействии с конечными пользователями.

Подробнее от official Django Site

+0

Спасибо, теперь это имеет большой смысл. – lawrencehagman

Смежные вопросы