I have dates in ISO 8601 format in the database, %Y-%m-%d
. However, when the date is passed on to the template, it comes out as something like Oct. 16, 2011
.
Is there a way that I can manipulate the format to whatever I want?
This question is related to
django
django-templates
If you need to show short date and time (11/08/2018 03:23 a.m.) you can do it like this:
{{your_date_field|date:"SHORT_DATE_FORMAT"}} {{your_date_field|time:"h:i a"}}
Details for this tag here and more about dates according to the given format here
Example:
<small class="text-muted">Last updated: {{your_date_field|date:"SHORT_DATE_FORMAT"}} {{your_date_field|time:"h:i a"}}</small>
Set both DATE_FORMAT
and USE_L10N
To make changes for the entire site in Django 1.4.1 add:
DATE_FORMAT = "Y-m-d"
to your settings.py
file and edit:
USE_L10N = False
since l10n overrides DATE_FORMAT
This is documented at: https://docs.djangoproject.com/en/dev/ref/settings/#date-format
{{yourDate|date:'*Prefered Format*'}}
Example:
{{yourDate|date:'F d, Y'}}
For preferred format: https://docs.djangoproject.com/en/3.1/ref/templates/builtins/#date
Within your template, you can use Django's date
filter. E.g.:
<p>Birthday: {{ birthday|date:"M d, Y" }}</p>
Gives:
Birthday: Jan 29, 1983
More formatting examples in the date filter docs.
Just use this:
{{you_date_field|date:'Y-m-d'}}
This will show something like 2016-10-16. You can use the format as you want.
In order to change date format in the views.py and then assign it to template.
# get the object details
home = Home.objects.get(home_id=homeid)
# get the start date
_startDate = home.home_startdate.strftime('%m/%d/%Y')
# assign it to template
return render_to_response('showme.html'
{'home_startdate':_startDate},
context_instance=RequestContext(request) )
What you need is a date template filter.
e.g:
<td>Joined {{user.date_created|date:"F Y" }}<td>
This returns Joined December 2018
Source: Stackoverflow.com