Locale date formatting in Python

If your application is supposed to support more than one locale then getting localized format of date/time by changing locale (by means of locale.setlocale()) is discouraged. For explanation why it’s a bad idea see Alex Martelli’s answer to the the question Using Python locale or equivalent in web applications? (basically locale is global and affects whole application so changing it might change behavior of other parts of application)

You can do it cleanly using Babel package like this:

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

See Date and Time section in Babel’s documentation.

Leave a Comment