2012-01-16 8 views
5

Tengo un u'20 січня 2012 'y necesito obtener el objeto datetime. (u'20 січня 2012 '== u'20 de enero de 2012')Cómo analizar el nombre del mes Unicode para obtener la fecha y hora en Python 2.7

Es muy fácil cuando tienes datetime.strptime ('1 jun 2005', '% d% b% Y') Pero qué ¿si tengo un mes en una configuración regional diferente?

(appengine + Python 2.7)

Sería bueno tener un método get_month (nombre u'Month en diferentes formas, Language.RUS) -> int: 'número de meses' Así la biblioteca podría procesar diferentes formas de nombre de mes. Por ejemplo, '1 Июнь' y '1 Июня' deben ser la misma fecha. Lo estoy usando para rastrear sitios web y la fecha de análisis.

+0

Si conoce la configuración regional correspondiente, se puede usar 'locale.setlocale (locale.LC_TIME, "...")' antes de las funciones de tiempo. –

Respuesta

8

Tal vez se puede convertir en un objeto de fecha y hora en primer lugar, a continuación, utilizar la configuración regional para establecer otra configuración regional y convertirlo de nuevo ..

Aquí hay algo para conseguir que a partir ..

import locale, datetime 

In [1]: datetime.datetime.strptime('February', '%B') 
Out[1]: datetime.datetime(1900, 2, 1, 0, 0) 

In [2]: locale.setlocale(locale.LC_ALL, 'de_DE') 
Out[2]: 'de_DE' 

In [3]: datetime.date(2008, 2, 1).strftime('%B') 
Out[3]: 'Februar' 

In [4]: datetime.datetime.strptime('Februar', '%B') 
Out[4]: datetime.datetime(1900, 2, 1, 0, 0) 
+2

locale.setlocale (locale.LC_ALL, 'de_DE') - no funciona en Windows 7. Este código no es estable debido a nombres de locale diferentes en sistemas diferentes. Y no hay una configuración regional para el idioma ucraniano (de acuerdo con http://msdn.microsoft.com/en-us/library/cdax410z%28VS.71%29.aspx) –

Cuestiones relacionadas