Comment obtenir datetime.datetime.now()
imprimé dans la langue locale ?
>>> session.deathDate.strftime("%a, %d %b %Y")
'Ven, 12 Juin 2009'
J'aimerais obtenir le même résultat mais dans la langue locale.
Comment obtenir datetime.datetime.now()
imprimé dans la langue locale ?
>>> session.deathDate.strftime("%a, %d %b %Y")
'Ven, 12 Juin 2009'
J'aimerais obtenir le même résultat mais dans la langue locale.
Si votre application est censée prendre en charge plusieurs paramètres régionaux, obtenir le format localisé de la date/heure en changeant le paramètre régional (au moyen de locale.setlocale()
) est déconseillé. Pour expliquer pourquoi c'est une mauvaise idée, consultez la réponse d'Alex Martelli à la question Utilisation de la locale Python ou équivalent dans les applications web ? (en gros, la locale est globale et affecte toute l'application, donc la modifier pourrait changer le comportement d'autres parties de l'application)
Vous pouvez le faire proprement en utilisant le package Babel comme ceci :
>>> from datetime import date, datetime, time
>>> from babel.dates import format_date, format_datetime, format_time
>>> d = date(2007, 4, 1)
>>> format_date(d, locale='en')
u'Apr 1, 2007'
>>> format_date(d, locale='de_DE')
u'01.04.2007'
Consultez la section Date et Heure dans la documentation de Babel.
Vous pouvez simplement définir la locale comme dans cet exemple :
>>> import time
>>> print time.strftime("%a, %d %b %Y %H:%M:%S")
Dim, 23 Oct 2005 20:38:56
>>> import locale
>>> locale.setlocale(locale.LC_TIME, "sv_SE") # suédois
'sv_SE'
>>> print time.strftime("%a, %d %b %Y %H:%M:%S")
sön, 23 okt 2005 20:39:15
Vous devriez utiliser %x
et %X
pour formater la chaîne de date dans la locale correcte. Par exemple, en suédois, une date est représentée comme 2014-11-14
au lieu de 11/14/2014
.
La manière correcte d'obtenir le résultat en tant qu'Unicode est la suivante :
locale.setlocale(locale.LC_ALL, lang)
format_ = datetime.datetime.today().strftime('%a, %x %X')
format_u = format_.decode(locale.getlocale()[1])
Voici le résultat dans plusieurs langues :
Bulgare пет, 14.11.2014 г. 11:21:10 ч.
Tchèque pá, 14.11.2014 11:21:10
Danois fr, 14-11-2014 11:21:10
Allemand Fr, 14.11.2014 11:21:10
Grec Παρ, 14/11/2014 11:21:10 πμ
Anglais Fri, 11/14/2014 11:21:10 AM
Espagnol vie, 14/11/2014 11:21:10
Estonien R, 14.11.2014 11:21:10
Finlandais pe, 14.11.2014 11:21:10
Français ven., 14/11/2014 11:21:10
Croate pet, 14.11.2014. 11:21:10
Hongrois P, 2014.11.14. 11:21:10
Italien ven, 14/11/2014 11:21:10
Lituanien Pn, 2014.11.14 11:21:10
Letton pk, 2014.11.14. 11:21:10
Néerlandais vr, 14-11-2014 11:21:10
Norvégien fr, 14.11.2014 11:21:10
Polonais Pt, 2014-11-14 11:21:10
Portugais sex, 14/11/2014 11:21:10
Roumain V, 14.11.2014 11:21:10
Russe Пт, 14.11.2014 11:21:10
Slovaque pi, 14. 11. 2014 11:21:10
Slovène pet, 14.11.2014 11:21:10
Suédois fr, 2014-11-14 11:21:10
Turc Cum, 14.11.2014 11:21:10
Chinois 周五, 2014/11/14 11:21:10
Une autre option est :
>>> import locale
>>> import datetime
>>> locale.setlocale(locale.LC_TIME,'')
'es_CR.UTF-8'
>>> date_format = locale.nl_langinfo(locale.D_FMT)
>>> date_format
'%d/%m/%Y'
>>> today = datetime.date.today()
>>> today
datetime.date(2012, 4, 23)
>>> today.strftime(date_format)
'23/04/2012'
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.