Работа с датами в 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-канал.