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