Skip to content Skip to sidebar Skip to footer

Handling International Dates In Python

I have a date that is either in German for e.g, 2. Okt. 2009 and also perhaps as 2. Oct. 2009 How do I convert this into an ISO datetime (or Python datetime)? Solved by using thi

Solution 1:

http://docs.python.org/library/locale.html

The datetime module is already locale-aware.

It's something like the following

# German locale
loc = locale.setlocale(locale.LC_TIME, ("de","de"))
try:
     date = datetime.date.strptime(input, "%d. %b. %Y")
except:
     # English locale
     loc = locale.setlocale(locale.LC_TIME, ("en","us"))
     date = datetime.date.strptime(input, "%d. %b. %Y")
        

Solution 2:

Very minor point about your code snippet: I'm no Python expert but I'd consider the whole "flag to check for success + silently swallowing all exceptions" to be bad style.

try/expect/else does what you want in a cleaner way, I think:

for l in locale.locale_alias:
    try:
        locale.setlocale(locale.LC_TIME, l)
    except locale.Error: # the doc says setlocale should throw this on failurepasselse:
        print l

Post a Comment for "Handling International Dates In Python"