Handling international dates in python

后端 未结 2 1440
心在旅途
心在旅途 2021-01-12 22:54

I have a date that is either formatted in German for e.g,

2. Okt. 2009

and also perhaps as

2. Oct. 2009

相关标签:
2条回答
  • 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" )
    
    0 讨论(0)
  • 2021-01-12 23:32

    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 form.

    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 failure
            pass
        else:
            print l
    
    0 讨论(0)
提交回复
热议问题