Bagaimana saya dapat mengubah format templat tanggal Django default?

100

Saya memiliki tanggal dalam format ISO 8601 dalam database %Y-%m-%d,. Namun, ketika tanggal diteruskan ke templat, hasilnya seperti ini Oct. 16, 2011.

Adakah cara agar saya dapat memanipulasi format menjadi apa pun yang saya inginkan?

pesta-
sumber

Jawaban:

57

date tag template

settings.DATE_FORMAT

Ignacio Vazquez-Abrams
sumber
Saya tidak yakin bagaimana saya akan mengubahnya di file pengaturan
bash-
3
Dengan cara yang sama Anda mengubah setiap pengaturan lainnya.
Ignacio Vazquez-Abrams
22
Tautan ke dokumen sebenarnya bukan jawaban, jadi berikan suara negatif ini dan berikan suara positif pada jawaban medmunds.
eric
276

Di dalam templat Anda, Anda dapat menggunakan datefilter Django . Misalnya:

<p>Birthday: {{ birthday|date:"M d, Y" }}</p>

Memberikan:

Tanggal Lahir: 29 Jan 1983

Lebih banyak contoh pemformatan di dokumen filter tanggal .

medmunds
sumber
Saya pikir ini hanya berfungsi jika tanggal disediakan sebagai objek datetime. Bagaimana jika itu hanya string yang diteruskan dari tampilan?
Mohammed Shareef C
2
Untuk string arbitrer yang berisi tanggal / waktu, saya mungkin akan menguraikannya menjadi datetime python dalam kode tampilan. (Atau bahkan lebih awal jika memungkinkan - di mana pun string tanggal itu pertama kali masuk dalam kode saya.) Tetapi jika Anda benar-benar ingin menggunakan string untuk melewatkan waktu ke templat Django Anda, jawaban ini tampak membantu.
medmunds
Contoh di atas sempurna untuk digunakan dalam file template.
Vinod Patidar
30

Setel keduanya DATE_FORMATdanUSE_L10N

Untuk membuat perubahan untuk seluruh situs di Django 1.4.1 tambahkan:

DATE_FORMAT = "Y-m-d"

ke settings.pyfile Anda dan edit:

USE_L10N = False

sejak l10n diganti DATE_FORMAT

Ini didokumentasikan di: https://docs.djangoproject.com/en/dev/ref/settings/#date-format

Ciro Santilli 郝海东 冠状 病 六四 事件 法轮功
sumber
20

Gunakan saja ini:

{{you_date_field|date:'Y-m-d'}}

Ini akan menunjukkan sesuatu seperti 2016-10-16 . Anda dapat menggunakan format yang Anda inginkan.

hardcoderrsl
sumber
8

Untuk mengubah format tanggal di views.py dan kemudian menetapkannya ke 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) )  
kta
sumber
8

Yang Anda butuhkan adalah filter template tanggal .

misalnya:

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

Ini kembali Joined December 2018

Toluwalemi
sumber
6

Jika Anda perlu menunjukkan tanggal dan waktu yang singkat (11/08/2018 03:23) Anda dapat melakukannya seperti ini:

{{your_date_field|date:"SHORT_DATE_FORMAT"}} {{your_date_field|time:"h:i a"}}

Detail untuk tag ini di sini dan lebih lanjut tentang tanggal sesuai dengan format yang diberikan di sini

Contoh:

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