it-swarm.com.de

Formatieren von Datumszeichenfolgen über mehrere Formate in Python

Ich habe drei Datumsformate: YYYY-MM-DD, DD.MM.YYYY, DD/MM/YYYY.

Kann ich Strings wie 2014-05-18 oder 18.5.2014 oder 18/05/2019 validieren und analysieren?

23
Alexey Sh.

Probieren Sie jedes Format aus und prüfen Sie, 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')
65
Jon Clements
>>> import dateutil.parser
>>> dateutil.parser.parse(date_string)

Dies sollte die meisten Standard-Datumsformate in Python 2.7 und höher berücksichtigen. Wenn Sie wirklich benutzerdefinierte Datumsformate haben, können Sie immer auf das von Jon Clements erwähnte zurückgreifen.

11
khan

Python pur:

from datetime import datetime
my_datetime = datetime.strptime('2014-05-18', '%Y-%m-%d') 
repr(my_datetime)

>>> 'datetime.datetime(2014,5,18,0,0)'

Überprüfen Sie die Dokumentation zum Format datetime.strptime () auf weitere Formatzeichenfolgen.

0
Gabriel M

Dies war eigentlich ein Problem, mit dem ich konfrontiert war, und so wie ich es angegangen bin, war mein Hauptzweck die Datumsseparatoren

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 --> ): ")
0
user3615696