Я пишу контент для AWS, Kubernetes, Python, JavaScript и многое другое. Чтобы просмотреть весь последний контент, обязательно Посетите мой блог и подписаться на мою рассылку. Следи за мной на Твиттере .
Это 16 -й день #100daysOfpython Challenge.
Этот пост будет использовать стандарт DateTime
Библиотека для работы с датами. Окончательный код проекта можно найти Здесь Анкет
Предварительные условия
- Знакомство с Пипенв . Смотрите Здесь за мой пост на Pipenv.
- Знакомство с ipython или интерактивные раковины.
Начиная
Давайте создадим Hello-Python-Times
каталог и установите необходимые зависимости.
# Make the `hello-python-datetimes` directory $ mkdir hello-python-datetimes $ cd hello-python-datetimes # Init the virtual environment $ pipenv --three $ pipenv install --dev ipython # Create a folder to place files $ mkdir src # Create the required files $ touch src/datetimes.py
Теперь мы готовы начать исследовать стандарт DateTime
библиотека.
Играя с датами и временем
Начните оболочку с Pipenv Shell Ipython
Анкет Это активирует виртуальную оболочку и запустит интерактивную оболочку iPython.
Теперь мы свободны от даты импорта DateTime
И поиграй с этим:
from datetime import date date(2021, 8, 4).isocalendar() # datetime.IsoCalendarDate(year=2021, week=31, weekday=3) date(2021, 8, 4).isoformat() # '2021-08-04' date(2021, 8, 4).ctime() # 'Wed Aug 4 00:00:00 2021' date(2021, 8, 4).strftime('%A') # Wednesday today = date.today() # datetime.date(2021, 8, 4)
Приведенное выше отображается некоторые из общих методов дата
класс. Более подробная информация о дата
Класс можно найти Здесь Анкет
Многое из того, что мы хотим сделать сегодня, – это взглянуть на то, как принять некоторые из этих методов и добраться до того, что мы можем сравнить даты.
Сравнение дат
Мы хотим написать вспомогательный метод, чтобы проверить, является ли данная дата в формате Yyyy-mm-dd
до сегодняшнего дня. Выйдите из ядра ipython и добавьте следующий код в нашем src/datetimes.py
файл:
from datetime import date def is_date_before_today(date_str: str): """Check if date is before today Args: date_str (str): String of a date to pass Returns: bool: Value of if date is before today """ try: date_obj = date.fromisoformat(date_str) return date_obj < date.today() except Exception: return False print(is_date_before_today("2019-01-01")) print(is_date_before_today("2022-01-01")) print(is_date_before_today("2021-08-03")) print(is_date_before_today("2021-08-04"))
Мы можем использовать >
и <
операторы для сравнения дат.
Если мы сейчас запустим Python src/datetimes.py
Мы должны увидеть следующий вывод:
$ python src/datetimes.py True # "2019-01-01" False # "2022-01-01" True # "2021-08-03" False # "2021-08-04"
Мы можем видеть, что вывод отражает строку даты, которая до сегодняшнего дня (с сегодняшним возвратом false
).
Работаю сейчас
DateTime
модуль из DateTime
Библиотека также имеет Теперь
Метод, который возвращает текущую дату и время.
Мы можем использовать это в сочетании с strftime
Чтобы получить текущую дату и время в формате строки. Обновите код на следующее:
from datetime import date, datetime def is_date_before_today(date_str: str): """Check if date is before today Args: date_str (str): String of a date to pass Returns: bool: Value of if date is before today """ try: date_obj = date.fromisoformat(date_str) return date_obj < date.today() except Exception: return False now = datetime.now() now_str = now.strftime('%Y-%m-%d') print(now_str) print(is_date_before_today(now_str))
Бег Python src/datetimes.py
будет выходить 2021-08-04
и Ложный
соответственно.
Чтобы узнать больше о Strftime
, есть отличный пост в блоге Здесь Анкет
Добавление и вычитание дат
Мы можем использовать datetime.timedelta
Чтобы добавить и вычесть даты.
Обновите наш код на следующее:
from datetime import date, datetime, timedelta def is_date_before_today(date_str: str): """Check if date is before today Args: date_str (str): String of a date to pass Returns: bool: Value of if date is before today """ try: date_obj = date.fromisoformat(date_str) return date_obj < date.today() except Exception: return False now = datetime.now() now_str = now.strftime('%Y-%m-%d') print(now_str) print(is_date_before_today(now_str)) now_subtract_one_day = now - timedelta(days=2) now_subtract_one_day_str = now_subtract_one_day.strftime('%Y-%m-%d') print(now_subtract_one_day_str) print(is_date_before_today(now_subtract_one_day_str)) now_add_one_day = now + timedelta(days=1) now_add_one_day_str = now_add_one_day.strftime('%Y-%m-%d') print(now_add_one_day_str) print(is_date_before_today(now_add_one_day_str))
Еще раз мы будем Python src/datetimes.py
который выведет следующее:
$ python src/datetimes.py 2021-08-04 False 2021-08-02 True 2021-08-05 False
Потрясающе, теперь мы знаем, как добавить и вычесть из дат!
Резюме
Сегодняшний пост продемонстрировал, как использовать DateTime
модуль для сравнения времени и определения текущей даты.
Даты и время невероятно важны для любых временных приложений, и следующие посты будут тратить некоторое время на то, чтобы рассмотреть это и как писать тесты для этой формы функциональности.
Ресурсы и дальнейшее чтение
Кредит фото: pawel_czerwinski
Первоначально опубликовано на моем блог . Чтобы увидеть новые сообщения без промедления, прочитайте сообщения там и подпишитесь на мою рассылку.
Оригинал: “https://dev.to/okeeffed/datetime-in-python-4d82”