Gebietsdatum Formatierung in Python

Wie bekomme ich datetime.datetime.now() in der Muttersprache ausgedruckt?

  >>> session.deathDate.strftime("%a, %d %b %Y") 'Fri, 12 Jun 2009' 

Ich würde gerne das gleiche Ergebnis bekommen, aber in der Landessprache.

  • Finden Sie das nächstgelegene Datum zu einem bestimmten Datum
  • Wie kann man String-Termine mit 2-stelligem Jahr analysieren?
  • Europäischer Datumseingang in Django Admin
  • Wie man mit mehreren Datumsstring-Formaten in einer Python-Serie umgehen kann
  • Pandas Lesedaten aus csv im yy-mm-dd-Format
  • Angesichts eines Datumsbereichs können wir es in N zusammenhängende Teilintervalle brechen?
  • 4 Solutions collect form web for “Gebietsdatum Formatierung in Python”

    Sie können einfach das Gebietsschema wie in diesem Beispiel:

     >>> import time >>> print time.strftime("%a, %d %b %Y %H:%M:%S") Sun, 23 Oct 2005 20:38:56 >>> import locale >>> locale.setlocale(locale.LC_TIME, "sv_SE") # swedish 'sv_SE' >>> print time.strftime("%a, %d %b %Y %H:%M:%S") sön, 23 okt 2005 20:39:15 

    Wenn Ihre Anwendung mehr als ein Gebietsschema unterstützen soll, dann wird das lokalisierte Format von Datum / Uhrzeit durch Ändern des Gebietsschemas (mittels locale.setlocale() ) entmutigt. Für die Erklärung, warum es eine schlechte Idee ist, sehen Sie Alex Martellis Antwort auf die Frage mit Python locale oder gleichwertig in Web-Anwendungen? (Grundsätzlich locale ist global und wirkt sich auf ganze Anwendung aus, so dass es das Verhalten anderer Teile der Anwendung verändern könnte)

    Sie können es sauber machen mit Babel Paket wie folgt:

     >>> 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' 

    Siehe Datum und Uhrzeit in der Dokumentation von Babel.

    Sie sollten %x und %X um die Datumszeichenfolge im richtigen Gebietsschema zu formatieren. ZB auf Schwedisch ist ein Datum als 2014-11-14 statt 11/14/2014 .

    Der richtige Weg, um das Ergebnis als Unicode zu erhalten, ist:

     locale.setlocale(locale.LC_ALL, lang) format_ = datetime.datetime.today().strftime('%a, %x %X') format_u = format_.decode(locale.getlocale()[1]) 

    Hier ist das Ergebnis aus mehreren Sprachen:

     Bulgarian пет, 14.11.2014 г. 11:21:10 ч. Czech pá, 14.11.2014 11:21:10 Danish fr, 14-11-2014 11:21:10 German Fr, 14.11.2014 11:21:10 Greek Παρ, 14/11/2014 11:21:10 πμ English Fri, 11/14/2014 11:21:10 AM Spanish vie, 14/11/2014 11:21:10 Estonian R, 14.11.2014 11:21:10 Finnish pe, 14.11.2014 11:21:10 French ven., 14/11/2014 11:21:10 Croatian pet, 14.11.2014. 11:21:10 Hungarian P, 2014.11.14. 11:21:10 Italian ven, 14/11/2014 11:21:10 Lithuanian Pn, 2014.11.14 11:21:10 Latvian pk, 2014.11.14. 11:21:10 Dutch vr, 14-11-2014 11:21:10 Norwegian fr, 14.11.2014 11:21:10 Polish Pt, 2014-11-14 11:21:10 Portuguese sex, 14/11/2014 11:21:10 Romanian V, 14.11.2014 11:21:10 Russian Пт, 14.11.2014 11:21:10 Slovak pi, 14. 11. 2014 11:21:10 Slovenian pet, 14.11.2014 11:21:10 Swedish fr, 2014-11-14 11:21:10 Turkish Cum, 14.11.2014 11:21:10 Chinese 周五, 2014/11/14 11:21:10 

    Eine weitere Option ist:

     >>> 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' 
    Python ist die beste Programmiersprache der Welt.