ChatGPT解决这个技术问题 Extra ChatGPT

How can I change the default Django date template format?

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?


m
medmunds

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.


I think this works only if date is provideded as a datetime object. What if it is just a string passed from the view?
For an arbitrary string containing a date/time, I'd probably parse it into a python datetime in the view code. (Or even earlier if possible -- wherever that date string first arrives in my code.) But if you really want to use strings to pass datetimes to your Django templates, this answer looks helpful.
Perfect above example to use in the template file.
F
Flimm

date template tag

settings.DATE_FORMAT


I'm not sure how I'd change that in the settings file
Link to docs isn't really an answer, so downvoted this and upvoted medmunds' answer.
C
Ciro Santilli Путлер Капут 六四事

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


P
Peter Mortensen

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.


P
Peter Mortensen

You need a date template filter.

E.g:

<td>Joined {{user.date_created|date:"F Y" }}<td>

This returns Joined December 2018.


C
Community

In order to change the date format in the views.py file 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) )  

P
Peter Mortensen

If you need to show a 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 is here and more about dates according to the given format is here.

Example:

<small class="text-muted">Last updated: {{your_date_field|date:"SHORT_DATE_FORMAT"}} {{your_date_field|time:"h:i a"}}</small>

P
Peter Mortensen
{{yourDate|date:'*Prefered Format*'}}

Example:

{{yourDate|date:'F d, Y'}}

For the preferred format: Built-in template tags and filters, date


P
Peter Mortensen

If you are getting an error in calling a Date value in a Django template, try this

{{ViewfieldValue.CreateModelValue|date:"M d, Y" }}