Работа с датами в Python
Эта статья объясняет работу с датами в Python.
YouTube Video
Работа с датами в Python
Работа с датами в Python в основном использует модуль datetime. Этот модуль предоставляет различные классы и функции для работы с датами и временем.
Ниже приведены примеры базовой работы с датами с использованием модуля datetime.
Получение даты и времени
Вы можете получить текущие дату и время следующим образом. datetime.now() и datetime.today() возвращают почти одинаковый результат, но могут отличаться по обработке часовых поясов.
1from datetime import datetime
2
3# Get the current date and time
4now = datetime.now()
5print(f"Current date and time: {now}")
6
7# Get today's date only
8today = datetime.today()
9print(f"Today's date: {today.date()}")- Этот код получает и отображает текущие дату и время, а также только сегодняшнюю дату.
Создание конкретных дат и времени
Вы можете создать определённые дату и время следующим образом.
1from datetime import datetime
2
3# Create a specific date and time
4specific_date = datetime(2023, 11, 7, 10, 30, 45)
5print(f"Specified date and time: {specific_date}")- Этот код создаёт и отображает указанную дату и время (7 ноября 2023 года, 10:30:45).
Форматирование дат
Форматирование даты можно выполнить следующим образом.
1from datetime import datetime
2
3now = datetime.now()
4
5# Format the date
6formatted_date = now.strftime("%Y-%m-%d %H:%M:%S")
7print(f"Formatted date and time: {formatted_date}")- Этот код получает текущие дату и время, форматирует их в указанный формат с помощью
strftimeи отображает результат.
Строки формата даты
%Y: Год (4 цифры)%m: Месяц (от 01 до 12)%d: День (от 01 до 31)%H: Час (от 00 до 23)%M: Минута (от 00 до 59)%S: Секунда (от 00 до 59)
Разбор строк даты
Вы можете преобразовать строку, представляющую дату, в объект datetime.
1from datetime import datetime
2
3date_string = "2023-11-07 10:30:45"
4parsed_date = datetime.strptime(date_string, "%Y-%m-%d %H:%M:%S")
5print(f"Parsed date and time: {parsed_date}")- Этот код преобразует дату, представленную в виде строки, в объект
datetimeс помощьюstrptime()и отображает его.
Арифметика дат
Арифметика с датами может быть выполнена следующим образом.
1from datetime import datetime, timedelta
2
3now = datetime.now()
4
5# Date for one day later
6tomorrow = now + timedelta(days=1)
7print(f"Date for one day later: {tomorrow}")
8
9# Date for one week ago
10last_week = now - timedelta(weeks=1)
11print(f"Date for one week ago: {last_week}")
12
13# Time for two hours later
14in_two_hours = now + timedelta(hours=2)
15print(f"Time for two hours later: {in_two_hours}")- Этот код использует
timedeltaдля добавления или вычитания дней и времени из текущих даты и времени, вычисляя и отображая дату и время на завтра, неделю назад и через два часа.
Работа с часовыми поясами
С помощью модуля datetime также можно работать с часовыми поясами.
1from datetime import datetime, timezone, timedelta
2
3# Current UTC time
4utc_now = datetime.now(timezone.utc)
5print(f"Current UTC time: {utc_now}")
6
7# JST (UTC+9)
8jst = timezone(timedelta(hours=9))
9jst_now = datetime.now(jst)
10print(f"Current JST time: {jst_now}")datetimeпо умолчанию возвращает 'наивное' значение (без информации о часовом поясе). Вы можете явно указывать часовой пояс, используя классtimezoneилиzoneinfo.
Классы date и time
С помощью модуля datetime можно работать только с датами или только со временем.
1from datetime import date, time
2
3d = date(2023, 11, 7)
4t = time(10, 30, 45)
5
6print(f"Date only: {d}")
7print(f"Time only: {t}")- Класс
dateработает только с датами, а классtime— только со временем.
Преобразование между datetime и timestamp
Возможна конвертация между UNIX-меткой времени и объектами datetime. Здесь UNIX-метка времени означает количество секунд, прошедших с 1 января 1970 года.
1from datetime import datetime
2
3now = datetime.now()
4
5# datetime → timestamp
6timestamp = now.timestamp()
7print(f"Timestamp: {timestamp}")
8
9# timestamp → datetime
10restored = datetime.fromtimestamp(timestamp)
11print(f"Restored datetime: {restored}")- Этот код преобразует текущие дату и время в UNIX-метку времени, а затем с помощью функции
fromtimestamp()преобразует её обратно в объектdatetime.
Типичные ошибки
При использовании модуля datetime следует учитывать следующие моменты.
datetime.now()не учитывает часовые пояса, поэтому для интернационализации необходимо явно использоватьtimezone.utc.- Осторожно: не перепутайте
%m(месяц) и%M(минута) в строках формата.
Резюме
Модуль datetime также предоставляет множество других функций для гибкой работы с датами и временем. Кроме того, доступны классы, такие как date, time и timedelta, специализированные для конкретных операций.
Использование других библиотек также позволяет выполнять более сложные операции с датами. Например, pandas специализируется на работе с временными рядами, а dateutil подходит для сложного разбора дат. Также библиотека arrow тоже полезна.
Вы можете следовать этой статье, используя Visual Studio Code на нашем YouTube-канале. Пожалуйста, также посмотрите наш YouTube-канал.