Ich habe drei Datumsformate: YYYY-MM-DD
, DD.MM.YYYY
, DD/MM/YYYY
.Wie formatieren Datumszeichenkette über mehrere Formate in Python
Ist es möglich, Strings wie 2014-05-18
oder 18.5.2014
oder 18/05/2019
zu validieren und zu analysieren?
Ich habe drei Datumsformate: YYYY-MM-DD
, DD.MM.YYYY
, DD/MM/YYYY
.Wie formatieren Datumszeichenkette über mehrere Formate in Python
Ist es möglich, Strings wie 2014-05-18
oder 18.5.2014
oder 18/05/2019
zu validieren und zu analysieren?
jedes Format versuchen und sehen, ob es funktioniert:
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')
Der letzte ist'% y'. Sollte "% Y" sein. –
@Vaibhav guten Platz - bearbeitet - danke. –
reiner 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)'
prüfen datetime.strptime() -Format Dokumentation für weitere Formatstrings.
Die Lösung sollte erweitert werden, um alle Datumsformate zu verwenden und zu erklären, wie man sich anpasst. –
@HansDa hast du Recht, aber die Antwort oben beantwortet die Frage bereits richtig und es gibt nichts hinzuzufügen. –
Ja, es ist schwer, @ Jon Clements zu verbessern. –
>>> import dateutil.parser
>>> dateutil.parser.parse(date_string)
Dies sollte sich um die meisten Standard-Datumsformate in Python 2.7+ kümmern. Wenn Sie wirklich super benutzerdefinierte Datumsformate haben, können Sie jederzeit auf das von Jon Clements erwähnte zurückgreifen.
Dies ist eigentlich ein Problem, das ich konfrontiert war und dies, wie ich mich näherte, mein Hauptziel war es, den Zeitpunkt seperators
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 -->): ")
Haben Sie betrachtet [dateutil] (https://labix.org/python- dateutil) - versäumt das - versuche einfach 'strptime' alle 3 der Reihe nach, um zu sehen, ob sie funktionieren, sonst scheitere ... –
Danke für den Kommentar.Ich möchte reinen Python ohne Third Party Libs verwenden –