Mam trzy formaty daty: YYYY-MM-DD
, DD.MM.YYYY
, DD/MM/YYYY
.Jak sformatować ciąg daty za pomocą wielu formatów w pythonie
Czy można sprawdzać poprawność i analizować ciągi znaków, takie jak 2014-05-18
lub 18.5.2014
lub 18/05/2019
?
Mam trzy formaty daty: YYYY-MM-DD
, DD.MM.YYYY
, DD/MM/YYYY
.Jak sformatować ciąg daty za pomocą wielu formatów w pythonie
Czy można sprawdzać poprawność i analizować ciągi znaków, takie jak 2014-05-18
lub 18.5.2014
lub 18/05/2019
?
Spróbuj każdego formatu i sprawdzić, czy to działa:
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')
Ostatni jest'% y'. Powinien mieć wartość "% Y". –
@Vaibhav dobre miejsce - edytowane - dzięki. –
Czysta python:
from datetime import datetime
my_datetime = datetime.strptime('2014-05-18', '%Y-%m-%d')
repr(my_datetime)
>>> 'datetime.datetime(2014,5,18,0,0)'
Sprawdź datetime.strptime() dokumentacja formatu wiecej strun wielkoformatowych.
Rozwiązanie należy rozszerzyć, aby korzystać z wszystkich formatów daty i wyjaśnić, jak wybrać, który z nich pasuje. –
@Hank Wtedy masz rację, ale odpowiedź powyżej już poprawnie odpowiada na pytanie i nie ma nic do dodania. –
Tak, trudno jest poprawić w @ Clement. –
>>> import dateutil.parser
>>> dateutil.parser.parse(date_string)
Powinno to zająć się większością standardowych formatów dat w Pythonie 2.7+. Jeśli naprawdę masz super niestandardowe formaty daty, zawsze możesz wrócić do tego, o którym wspomniał Jon Clements.
To rzeczywiście problem i był z widokiem i to w jaki sposób i zbliżył go, moim głównym celem było datą Zgarniacze
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 -->): ")
Szukały na [dateutil] (https://labix.org/python- dateutil) - w przeciwnym wypadku - po prostu spróbuj 'strptime'ing po kolei po 3, aby sprawdzić, czy działają, w przeciwnym razie ... –
Dziękuję za komentarz. Chcę używać czystego pythona bez bibliotek stron trzecich –