Как проверить формат строки даты в python?



У меня есть метод python, который принимает дата ввода в виде строки.



Как добавить проверку, чтобы убедиться, что строка даты, передаваемая методу, находится в ffg. формат:



'YYYY-MM-DD'


если это не так, метод должен вызывать какую-то ошибку

2864   5  

5 ответов:

>>> import datetime
>>> def validate(date_text):
    try:
        datetime.datetime.strptime(date_text, '%Y-%m-%d')
    except ValueError:
        raise ValueError("Incorrect data format, should be YYYY-MM-DD")


>>> validate('2003-12-23')
>>> validate('2003-12-32')

Traceback (most recent call last):
  File "<pyshell#20>", line 1, in <module>
    validate('2003-12-32')
  File "<pyshell#18>", line 5, in validate
    raise ValueError("Incorrect data format, should be YYYY-MM-DD")
ValueError: Incorrect data format, should be YYYY-MM-DD

The Python dateutil библиотека предназначена для этого (и больше). Он автоматически преобразует это в

from datetime import datetime

datetime.strptime(date_string, "%Y-%m-%d")

..это поднимает ValueError если он получает несовместимый формат.

..если вы имеете дело с датами и временем много (в смысле объектов datetime, в отличие от временных меток unix), неплохо заглянуть в модуль pytz, а для хранения/db хранить все в UTC.

Я думаю, что полная функция проверки должна выглядеть так:

from datetime import datetime

def validate(date_text):
    try:
        if date_text != datetime.strptime(date_text, "%Y-%m-%d").strftime('%Y-%m-%d'):
            raise ValueError
        return True
    except ValueError:
        return False

занятие

datetime.strptime(date_text, "%Y-%m-%d") 

недостаточно, потому что метод strptime не проверяет, что месяц и день месяца являются нулевыми десятичными числами. Например

datetime.strptime("2016-5-3", '%Y-%m-%d')

будет выполняться без ошибок.

Это самый простой способ:

date = datetime.now()
date = date.strftime('%Y-%m-%d_%H-%M-%S.jpg')

Comments

    Ничего не найдено.