Дата и время в Python

Введение

В этой статье вы узнаете как работать с датой и временем в Python 3.

Текущее время

Создайте файл current_time.py следующего содержания

import datetime current_time = datetime.datetime.now() print(f"Сейчас: {current_time}") # Отдельно час, минута и секунда print(f"\nЧас: {now.hour}" f"\nМинута: {now.minute}" f"\nСекунда: {now.second}" ) # Отдельно год, месяц и день print(f"\nГод: {now.year}" f"\nМесяц: {now.month}" f"\nДень: {now.day}" )

python current_time.py

Сейчас: 2026-11-07 18:38:03.185141 Час: 06 Минута: 38 Секунда: 03 Год: 2026 Месяц: 11 День: 07

Сегодняшняя дата

Создайте файл today.py следующего содержания

import datetime today = datetime.date.today() print(f"Сегодня: {today}")

python today.py

Сегодня: 2026-11-07

Работа со временем в стандартной библиотеке

Рассмотрим файл date_time.py

import datetime # DATE specified_date = datetime.date(2020, 11, 23) print(f"specified_date: {specified_date}") today = datetime.date.today() print(f"today: {today}") print(f"today.year: {today.year}") print(f"today.month: {today.month}") print(f"today.day: {today.day}") # Monday is 0 Sunday is 6 print(f"today.weekday: {today.weekday()}") # Monday is 1 Sunday is 7 print(f"today.isoweekday: {today.isoweekday()}")

python3 date_time.py

specified_date: 2020-11-23 today: 2026-11-07 today.year: 2026 today.month: 11 today.day: 07 today.weekday: 5 today.isoweekday: 6

Временные интервалы

Можно прибавлять временные интервалы к текущему времени или вычитать их из него

import datetime # DATE tdelta = datetime.timedelta(days=7) print(f"next week: {today + tdelta}") print(f"last week: {today - tdelta}")

next week: 2026-11-14 last week: 2026-10-31

bday = datetime.date(2134, 3, 9) till_bday = bday - today print(f"days till 200 birthday: {till_bday.days}") print(f"seconds till 200 birthday: {till_bday.total_seconds()}") # TIME t = datetime.time(9, 30, 45, 100000) print(f"hour: {t.hour}") # DATETIME dt = datetime.datetime(2020, 11, 23, 12, 42, 30, 100000) print(f"time: {dt.time()}") print(f"year: {dt.year}") tdelta = datetime.timedelta(days=7) print(f"dt + delta: {dt + tdelta}") dt_today = datetime.datetime.today() dt_now = datetime.datetime.now() dt_utcnow = datetime.datetime.utcnow() print(f"today: {dt_today}\nnow: {dt_now}\nutc: {dt_utcnow}")

days till 200 birthday: 40851 seconds till 200 birthday: 3529526400.0 hour: 9 time: 18:38:03.100000 year: 2026 dt + delta: 2026-11-14 18:38:03.100000 today: 2026-11-07 18:38:03.764377 now: 2026-11-07 18:38:03.764386 utc: 2026-11-07 16:38:03.764390

Функции из datetime

github

_is_leap()

Определяет високосный ли год

def _is_leap(year): "year -> 1 if leap year, else 0." return year % 4 == 0 and (year % 100 != 0 or year % 400 == 0)

_days_before_year()

Определяет сколько дней прошло между 1 января 1-го года и 1 января заданного года

def _days_before_year(year): "year -> number of days before January 1st of year." y = year - 1 return y*365 + y//4 - y//100 + y//400

fromtimestamp

Конвертировать время из формата epochtime в обычный можно с помощью метода fromtimestamp

Время в формате epochtime получим с помощью метода st_mtime из библиотеки pathlib

from pathlib import Path from datetime import datetime with open("cities.txt", "w") as f: f.write("Barcelona, Benalmadena, Cordoba, Malaga, Torremolinos") file = Path("cities.txt") file_stat = file.stat() print(file_stat.st_mtime) print(datetime.fromtimestamp(file_stat.st_mtime))

1794069483.020916 2026-11-07 18:38:03.020916

Конвертировать строку в datetime

Если нужно создать datetime из строки - можно воспользоваться методом strptime()

import datetime time_str = "2024-02-13 17:43:25" format = "%Y-%m-%d %H:%M:%S" new_timestamp = datetime.datetime.strptime(time_str, format) print(new_timestamp) print(type(new_timestamp))

2024-02-13 17:43:25 <class 'datetime.datetime'>

Сравнение времен между собой

Одно из преимуществ, которое можно получить конвертировав время из строки в datetime объект - это возможность корректного сравнения временных отметок между собой.

from datetime import datetime format = "%Y-%m-%d %H:%M:%S" midnight = "2024-02-13 00:00:00" noon = "2024-02-13 12:00:00" midnight_timestamp = datetime.strptime(midnight, format) noon_timestamp = datetime.strptime(noon, format) print(midnight_timestamp > noon_timestamp) print(datetime.now() > noon_timestamp)

False True

Автор статьи: Андрей Олегович

Изображение баннера