Convertir string a date o datetime
Oswaldo Hernández
listas en soft-com.es
Vie Mar 17 17:01:50 CET 2006
Hernan Martinez Foffani escribió:
>
> >>> import datetime
> >>> import time
> >>>
> >>> d = datetime.datetime(2000,12,30)
> >>> d.strftime("%x")
> '12/30/00'
> >>>
> >>> s = time.strptime("12/30/00","%x")
> >>> datetime.datetime(s[0], s[1], s[2])
> datetime.datetime(2000, 12, 30, 0, 0)
>
Con locale "en" funciona, pero con locale "sp" no:
>>> import datetime
>>> import time
>>> import locale
>>>
>>> locale.setlocale(locale.LC_TIME, "sp")
'Spanish_Spain.1252'
>>>
>>> d = datetime.datetime(2000, 12, 30)
>>> d.strftime("%x")
'30/12/2000'
>>> # ok 30 de diciembre
>>>
>>> s = time.strptime("30/12/2000", "%x")
Traceback (most recent call last):
File "<pyshell#85>", line 1, in -toplevel-
s = time.strptime("30/12/2000", "%x")
File "C:\Python24\lib\_strptime.py", line 293, in strptime
raise ValueError("time data did not match format: data=%s fmt=%s" %
ValueError: time data did not match format: data=30/12/2000 fmt=%x
>>>
>>
>>On 3/17/06, Oswaldo Hernández <listas en soft-com.es> wrote:
>>
>>>Oswaldo Hernández escribió:
>>>
>>>>Hola a todos,
>>>>
>>>>No encuentro ninguna funcion que tome un string que contiene una fecha y
>>>>lo convierta a un objeto date o datetime.
>>>>
>>>>Para hacerlo manualmente me gustaria obtener cual es el formato de fecha
>>>>de la configuracion local, pero tampoco encuentro en el locale este dato.
>>>>
>>>
>>>Gracias Milton y Marcelo pero no es eso exactamente lo que busco, me explico un poco más:
>>>
>>>Lo que quiero es extraer la fecha de un string pero teniendo en cuenta el locale establecido,
>>>strftime("%x") detecta automáticamente el locale establecido y convierte date a string según sus reglas:
>>>
>>> >>> import locale
>>> >>> import datetime
>>> >>>
>>> >>> fecha = datetime.date(2006, 02, 15)
>>> >>>
>>> >>> # asignacion locale español
>>> >>> locale.setlocale(locale.LC_TIME, "sp")
>>>'Spanish_Spain.1252'
>>> >>> fecha.strftime("%x")
>>>'15/02/2006'
>>>
>>> >>> # locale ingles
>>> >>> locale.setlocale(locale.LC_TIME, "en")
>>>'English_United States.1252'
>>> >>> fecha.strftime("%x")
>>>'2/15/2006'
>>>
>>>Lo que yo pretendo es la operación inversa con la reglas del locale actual. Y es ahí donde estoy
>>>atascado, no encuentro la inversa a strftime("%x")
>>>
>>>Para extraer manualmente el día, mes y año del string necesito saber cual es el formato actual:
>>>dd/mm/aaaa, mm/dd/aaaa o aaaa/mm/dd.
>>>
>>>Lo único que he encontrado para esto es la mención que hace el modulo locale sobre la función
>>>'nl_langinfo()' que con el parámetro 'locale.D_FMT' daría esta información, pero en windows no
>>>funciona (dice que no esta disponible en todas las plataformas, aunque no indica en cuales).
>>>
>>>¿Alguien sabe cono resolver esto?
>>>
>>>--
--
*****************************************
Oswaldo Hernández
oswaldo en soft-com.es
*****************************************
Más información sobre la lista de distribución Python-es