Как отформатировать объекты даты и времени в представлении и шаблоне в Django

Работаете с датами в Джанго? Модуль datetime в Python предлагает классы для удобного управления датами и временем. Вы можете отформатировать любую дату Python (при условии, что это объект datetime), используя метод strftime.

Форматирование даты

Объект datetime будет иметь метод strftime это позволяет вам предоставлять произвольный формат даты и печатать ее в виде строки, где вам нужно. Вы можете указать, как и где каждая часть даты должна отображаться со следующими идентификаторами:

Строка формата
Описание
%aСокращенное название дня недели.
%AПолное название дня недели.
%bСокращенное название месяца в локали.
%BПолное название месяца в локали.
%cСоответствующая локали дата и время.
%dДень месяца в виде десятичного числа [01,31].
%HЧас (24-часовые часы) в виде десятичного числа [00,23].
%IЧас (12-часовые часы) в виде десятичного числа [01,12].
%jДень года в виде десятичного числа [001,366].
%mМесяц как десятичное число [01,12].
%MМинута в виде десятичного числа [00,59].
%pЛокальный эквивалент либо AM, либо PM.
%SВторой как десятичное число [00,61].
%UНомер недели в году (воскресенье как первый день недели) в виде десятичного числа [00,53]. Все дни в новом году, предшествующем первому воскресенью, считаются на неделе 0.
%wДень недели в виде десятичного числа [0 (воскресенье), 6].
%WНомер недели в году (понедельник — первый день недели) в виде десятичного числа [00,53]. Все дни в новом году, предшествующем первому понедельнику, считаются на неделе 0.
%xСоответствующая дата локали.
%XСоответствующее время локали.
%yГод без века как десятичное число [00,99].
%YГод с веком как десятичное число.
%ZНазвание часового пояса (без символов, если часовой пояс не существует).
%%Буквальный '%' персонаж.

В представлении

Внутри контроллера у вас есть доступ непосредственно к объекту datetime. Это означает, что вы можете просто выполнить функцию strftime и передать строку формата в качестве первого аргумента:

# -*- coding: utf-8 -*-
from __future__ import unicode_literals
from django.shortcuts import render
# Import Datetime
from datetime import datetime
def index(request):
# return HttpResponse("Hello, world !")
# Some Date Object, for example a default generated by datetime
myDate = datetime.now()
# Give a format to the date
# Displays something like: Aug. 27, 2017, 2:57 p.m.
formatedDate = myDate.strftime("%Y-%m-%d %H:%M:%S")
# Do something with the formatted date
return render(request, 'pages/index.html', {
'date': formatedDate
})

В шаблоне

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

# -*- coding: utf-8 -*-
from __future__ import unicode_literals
from django.shortcuts import render
# Import Datetime class
from datetime import datetime
def index(request):
# Some Date Object, for example a default generated by datetime
myDate = datetime.now()
# Render Some Template with a parameter accesible as date
return render(request, 'pages/index.html', {
'date': myDate
})

Содержание следующего шаблона (index.html) будет использовать следующий код для форматирования предоставленного объекта даты:

Prints something like:  Aug. 27, 2017, 2:57 p.m.
{{ date|date:'Y-m-d H:i' }}
Ссылка на основную публикацию
Adblock
detector