python - create - Cadena de fecha de parse y formato de cambio
timestamp python (8)
Tengo una cadena de fecha con el formato ''Lun Feb 15 2010''. Quiero cambiar el formato a ''15 / 02/2010 ''. ¿Cómo puedo hacer esto?
@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 le preguntó. Espero que esto sea suficiente explicación.
from datetime import datetime
datetime.strptime("Mon Feb 15 2010", "%a %b %d %Y").strftime("%d/%m/%Y")
Como esta pregunta viene a menudo, aquí está la explicación simple.
datetime
módulo de datetime
y time
tiene dos funciones importantes.
- strftime : crea una representación de cadena de fecha u hora desde un objeto datetime u time.
- strptime - crea un objeto datetime o time a partir de una cadena.
En ambos casos, necesitamos una cadena de formateo. 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 de nuevo a un objeto datetime
.
>>> new_date = datetime.strptime(s, ''%a %b %d %y'')
>>> print new_date
2010-02-15 00:00:00
Consulte This documento con todas las directivas de formato con respecto a la fecha y hora.
Puede instalar la biblioteca dateutil . Su función de parse
puede averiguar en qué formato está una cadena sin tener que especificar el formato como lo hace con 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
Solo para completar: al analizar una fecha usando strptime()
y la fecha contiene el nombre de un día, mes, etc., tenga en cuenta que debe contabilizar la configuración regional.
También se menciona como una nota al pie en los docs .
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''
convertir cadena a objeto datetime
from datetime import datetime
s = "2016-03-26T09:25:55.000Z"
f = "%Y-%m-%dT%H:%M:%S.%fZ"
datetime = datetime.strptime(s, f)
print(datetime)
output:
2016-03-26 09:25:55
use la biblioteca datetime datetime busque 9.1.7. especiall strptime () strftime () Behavior¶ examples http://pleac.sourceforge.net/pleac_python/datesandtimes.html
>>> 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''