Package babel :: Module dates

Module dates



Locale dependent formatting and parsing of dates and times.

The default locale for the functions in this module is determined by the following environment variables, in that order:



Functions
unicode
format_date(date=None, format='medium', locale='de_DE')
Return a date formatted according to the given pattern.
unicode
format_datetime(datetime=None, format='medium', tzinfo=None, locale='de_DE')
Return a date formatted according to the given pattern.
unicode
format_time(time=None, format='medium', tzinfo=None, locale='de_DE')
Return a time formatted according to the given pattern.
date
parse_date(string, locale='de_DE')
Parse a date from a string.
datetime
parse_datetime(string, locale='de_DE')
Parse a date and time from a string.
time
parse_time(string, locale='de_DE')
Parse a time from a string.
Function Details

format_date(date=None, format='medium', locale='de_DE')

 

Return a date formatted according to the given pattern.

>>> d = date(2007, 04, 01)
>>> format_date(d, locale='en_US')
u'Apr 1, 2007'
>>> format_date(d, format='full', locale='de_DE')
u'Sonntag, 1. April 2007'

If you don't want to use the locale default formats, you can specify a custom date pattern:

>>> format_date(d, "EEE, MMM d, ''yy", locale='en')
u"Sun, Apr 1, '07"
Parameters:
  • date - the date or datetime object; if None, the current date is used
  • format - one of "full", "long", "medium", or "short", or a custom date/time pattern
  • locale - a Locale object or a locale identifier
Returns: unicode

Note: If the pattern contains time fields, an AttributeError will be raised when trying to apply the formatting. This is also true if the value of date parameter is actually a datetime object, as this function automatically converts that to a date.

format_datetime(datetime=None, format='medium', tzinfo=None, locale='de_DE')

 

Return a date formatted according to the given pattern.

>>> dt = datetime(2007, 04, 01, 15, 30)
>>> format_datetime(dt, locale='en_US')
u'Apr 1, 2007 3:30:00 PM'

For any pattern requiring the display of the time-zone, the third-party pytz package is needed to explicitly specify the time-zone:

>>> from pytz import timezone
>>> format_datetime(dt, 'full', tzinfo=timezone('Europe/Berlin'),
...                 locale='de_DE')
u'Sonntag, 1. April 2007 17:30 Uhr MESZ'
>>> format_datetime(dt, "yyyy.MM.dd G 'at' HH:mm:ss zzz",
...                 tzinfo=timezone('US/Eastern'), locale='en')
u'2007.04.01 AD at 11:30:00 EDT'
Parameters:
  • datetime - the datetime object; if None, the current date and time is used
  • format - one of "full", "long", "medium", or "short", or a custom date/time pattern
  • tzinfo - the timezone to apply to the time for display
  • locale - a Locale object or a locale identifier
Returns: unicode

format_time(time=None, format='medium', tzinfo=None, locale='de_DE')

 

Return a time formatted according to the given pattern.

>>> t = time(15, 30)
>>> format_time(t, locale='en_US')
u'3:30:00 PM'
>>> format_time(t, format='short', locale='de_DE')
u'15:30'

If you don't want to use the locale default formats, you can specify a custom time pattern:

>>> format_time(t, "hh 'o''clock' a", locale='en')
u"03 o'clock PM"

For any pattern requiring the display of the time-zone, the third-party pytz package is needed to explicitly specify the time-zone:

>>> from pytz import timezone
>>> t = time(15, 30)
>>> format_time(t, format='full', tzinfo=timezone('Europe/Berlin'),
...             locale='de_DE')
u'17:30 Uhr MESZ'
>>> format_time(t, "hh 'o''clock' a, zzzz", tzinfo=timezone('US/Eastern'),
...             locale='en')
u"11 o'clock AM, Eastern Daylight Time"
Parameters:
  • time - the time or datetime object; if None, the current time is used
  • format - one of "full", "long", "medium", or "short", or a custom date/time pattern
  • tzinfo - the time-zone to apply to the time for display
  • locale - a Locale object or a locale identifier
Returns: unicode

Note: If the pattern contains date fields, an AttributeError will be raised when trying to apply the formatting. This is also true if the value of time parameter is actually a datetime object, as this function automatically converts that to a time.

parse_date(string, locale='de_DE')

 

Parse a date from a string.

This function uses the date format for the locale as a hint to determine the order in which the date fields appear in the string.

>>> parse_date('4/1/04', locale='en_US')
datetime.date(2004, 4, 1)
>>> parse_date('01.04.2004', locale='de_DE')
datetime.date(2004, 4, 1)
Parameters:
  • string - the string containing the date
  • locale - a Locale object or a locale identifier
Returns: date
the parsed date

parse_datetime(string, locale='de_DE')

 

Parse a date and time from a string.

This function uses the date and time formats for the locale as a hint to determine the order in which the time fields appear in the string.

Parameters:
  • string - the string containing the date and time
  • locale - a Locale object or a locale identifier
Returns: datetime
the parsed date/time

parse_time(string, locale='de_DE')

 

Parse a time from a string.

This function uses the time format for the locale as a hint to determine the order in which the time fields appear in the string.

>>> parse_time('15:30:00', locale='en_US')
datetime.time(15, 30)
Parameters:
  • string - the string containing the time
  • locale - a Locale object or a locale identifier
Returns: time
the parsed time