imprimir - print en python 3
Cómo formatear la cadena de fecha a través de múltiples formatos en Python (4)
Tengo tres formatos de fecha: YYYY-MM-DD
, DD.MM.YYYY
, DD/MM/YYYY
.
¿Es posible validar y analizar cadenas como 2014-05-18
o 18.5.2014
o 18/05/2019
?
Este es realmente un problema al que me enfrentaba y cómo lo abordé, mi propósito principal era el de los separadores de fechas.
class InputRequest:
"This class contain all inputs function that will be required in this program. "
def __init__(self, stockTickerName = ''YHOO'', stockSite=''yahoo'', startDate = None,
endDate = datetime.date.today()):
def requestInput(self, requestType =''''):
"Fro requesting input from user"
self.__requestInput = input(requestType)
return self.__requestInput
def dateFormat(self, dateType=''''):
''''''
this function handles user date input
this repeats until the correct format is supplied
dataType: this is the type of date, eg: DOF, Date of Arriveal, etc
''''''
while True:
try:
dateString = InputRequest.requestInput(self,dateType)
dtFormat = (''%Y/%m/%d'',''%Y-%m-%d'',''%Y.%m.%d'',''%Y,%m,%d'',''%Y/%m/%d'') #you can add extra formats needed
for i in dtFormat:
try:
return datetime.datetime.strptime(dateString, i).strftime(i)
except ValueError:
pass
except ValueError:
pass
print(''/nNo valid date format found. Try again:'')
print("Date must be seperated by either [/ - , . /] (eg: 2012/12/31 --> ): ")
Pitón puro:
from datetime import datetime
my_datetime = datetime.strptime(''2014-05-18'', ''%Y-%m-%d'')
repr(my_datetime)
>>> ''datetime.datetime(2014,5,18,0,0)''
Consulte la documentación del formato datetime.strptime () para ver más cadenas de formato.
Prueba cada formato y ve si funciona:
from datetime import datetime
def try_parsing_date(text):
for fmt in (''%Y-%m-%d'', ''%d.%m.%Y'', ''%d/%m/%Y''):
try:
return datetime.strptime(text, fmt)
except ValueError:
pass
raise ValueError(''no valid date format found'')
>>> import dateutil.parser
>>> dateutil.parser.parse(date_string)
Esto debería ocuparse de la mayoría de los formatos de fecha estándar en Python 2.7+. Si realmente tiene formatos de fecha súper personalizados, siempre puede recurrir al que menciona Jon Clements.