Tengo una cadena de fecha con el formato 'Lunes 15 de febrero de 2010'. Quiero cambiar el formato a '15 / 02/2010 '. ¿Cómo puedo hacer esto?
Tengo una cadena de fecha con el formato 'Lunes 15 de febrero de 2010'. Quiero cambiar el formato a '15 / 02/2010 '. ¿Cómo puedo hacer esto?
Respuestas:
datetime
módulo podría ayudarlo con eso:
datetime.datetime.strptime(date_string, format1).strftime(format2)
Para el ejemplo específico, podría hacer
>>> datetime.datetime.strptime('Mon Feb 15 2010', '%a %b %d %Y').strftime('%d/%m/%Y')
'15/02/2010'
>>>
date_string
como una cadena.
format1
debe ser una cadena para expresar el formato de la cadena de fecha de entrada. format2
es el formato de cadena de destino para la salida.
Puede instalar la biblioteca dateutil . Su parse
función puede averiguar en qué formato está una cadena sin tener que especificar el formato como lo hace usted datetime.strptime
.
from dateutil.parser import parse
dt = parse('Mon Feb 15 2010')
print(dt)
# datetime.datetime(2010, 2, 15, 0, 0)
print(dt.strftime('%d/%m/%Y'))
# 15/02/2010
python 3.x
las necesidades de instalarpython-dateutil
pip install python-dateutil
>>> from_date="Mon Feb 15 2010"
>>> import time
>>> conv=time.strptime(from_date,"%a %b %d %Y")
>>> time.strftime("%d/%m/%Y",conv)
'15/02/2010'
convertir cadena en objeto de fecha y hora
from datetime import datetime
s = "2016-03-26T09:25:55.000Z"
f = "%Y-%m-%dT%H:%M:%S.%fZ"
out = datetime.strptime(s, f)
print(out)
output:
2016-03-26 09:25:55
Como esta pregunta surge a menudo, aquí está la explicación simple.
datetime
o time
módulo tiene dos funciones importantes.
En ambos casos, necesitamos una cadena de formato. Es la representación que indica cómo se formatea la fecha o la hora en su cadena.
Ahora supongamos que tenemos un objeto de fecha.
>>> from datetime import datetime
>>> d = datetime(2010, 2, 15)
>>> d
datetime.datetime(2010, 2, 15, 0, 0)
Si queremos crear una cadena a partir de esta fecha en el formato 'Mon Feb 15 2010'
>>> s = d.strftime('%a %b %d %y')
>>> print s
Mon Feb 15 10
Supongamos que queremos convertir esto s
nuevamente en un datetime
objeto.
>>> new_date = datetime.strptime(s, '%a %b %d %y')
>>> print new_date
2010-02-15 00:00:00
Consulte este documento todas las directivas de formato con respecto a la fecha y hora.
Solo para completar: cuando analice una fecha utilizando strptime()
y la fecha contiene el nombre de un día, mes, etc., tenga en cuenta que debe tener en cuenta la configuración regional.
También se menciona como nota a pie de página en los documentos .
Como ejemplo:
import locale
print(locale.getlocale())
>> ('nl_BE', 'ISO8859-1')
from datetime import datetime
datetime.strptime('6-Mar-2016', '%d-%b-%Y').strftime('%Y-%m-%d')
>> ValueError: time data '6-Mar-2016' does not match format '%d-%b-%Y'
locale.setlocale(locale.LC_ALL, 'en_US')
datetime.strptime('6-Mar-2016', '%d-%b-%Y').strftime('%Y-%m-%d')
>> '2016-03-06'
@codeling y @ user1767754: Las siguientes dos líneas funcionarán. Vi que nadie publicó la solución completa para el problema de ejemplo que se preguntó. Con suerte, esta es una explicación suficiente.
import datetime
x = datetime.datetime.strptime("Mon Feb 15 2010", "%a %b %d %Y").strftime("%d/%m/%Y")
print(x)
Salida:
15/02/2010
También puede lograr esto usando pandas:
import pandas as pd
pd.to_datetime('Mon Feb 15 2010', format='%a %b %d %Y').strftime('%d/%m/%Y')
Salida:
'15/02/2010'
Puede aplicar el enfoque de pandas para diferentes tipos de datos como:
import pandas as pd
import numpy as np
def reformat_date(date_string, old_format, new_format):
return pd.to_datetime(date_string, format=old_format, errors='ignore').strftime(new_format)
date_string = 'Mon Feb 15 2010'
date_list = ['Mon Feb 15 2010', 'Wed Feb 17 2010']
date_array = np.array(date_list)
date_series = pd.Series(date_list)
old_format = '%a %b %d %Y'
new_format = '%d/%m/%Y'
print(reformat_date(date_string, old_format, new_format))
print(reformat_date(date_list, old_format, new_format).values)
print(reformat_date(date_array, old_format, new_format).values)
print(date_series.apply(lambda x: reformat_date(x, old_format, new_format)).values)
Salida:
15/02/2010
['15/02/2010' '17/02/2010']
['15/02/2010' '17/02/2010']
['15/02/2010' '17/02/2010']
use la biblioteca de fecha y hora http://docs.python.org/library/datetime.html busque 9.1.7. especiall strptime () strftime () Comportamiento¶ ejemplos http://pleac.sourceforge.net/pleac_python/datesandtimes.html