JavaRush /Курси /Модуль 1: Python Core /Бібліотека datetime

Бібліотека datetime

Модуль 1: Python Core
Рівень 8 , Лекція 8
Відкрита

9.1 Робота з датою і часом

Програмістам дуже часто доводиться у своїх програмах працювати з датами і часом. Тому нічого дивного в тому, що в Python на ці випадки є дві стандартні бібліотеки datetime і time.

Бібліотека datetime є частиною стандартної бібліотеки Python і надає класи для роботи з датами і часом. Вона дозволяє створювати, маніпулювати і форматувати дати і час, а також виконувати арифметичні операції з ними.

Основні класи бібліотеки datetime

Клас datetime.date

Цей клас представляє дату (рік, місяць, день) без часу. Він корисний для роботи з календарними датами.

Приклад використання:


import datetime

# Створення об'єкта дати
d = datetime.date(2023, 5, 24)
print(d)  # Вивід: 2023-05-24
            
# Отримання поточної дати
today = datetime.date.today()
print(today)
            
# Доступ до атрибутів року, місяця і дня
print(d.year)  # Вивід: 2023
print(d.month)  # Вивід: 5
print(d.day)  # Вивід: 24

Клас datetime.time

Цей клас представляє час (години, хвилини, секунди, мікросекунди) без дати. Він корисний для роботи з часом доби.

Приклад використання:


import datetime

# Створення об'єкта часу
t = datetime.time(14, 30, 45)
print(t)  # Вивід: 14:30:45
            
# Доступ до атрибутів годин, хвилин і секунд
print(t.hour)  # Вивід: 14
print(t.minute)  # Вивід: 30
print(t.second)  # Вивід: 45

Клас datetime.datetime

Цей клас об'єднує дату і час (рік, місяць, день, години, хвилини, секунди, мікросекунди). Він корисний для роботи з конкретними моментами часу.

Приклад використання:


import datetime

# Створення об'єкта дати і часу
dt = datetime.datetime(2023, 5, 24, 14, 30, 45)
print(dt)  # Вивід: 2023-05-24 14:30:45
        
# Отримання поточної дати і часу
now = datetime.datetime.now()
print(now)
        
# Доступ до атрибутів дати і часу
print(dt.year)  # Вивід: 2023
print(dt.month)  # Вивід: 5
print(dt.day)  # Вивід: 24
print(dt.hour)  # Вивід: 14
print(dt.minute)  # Вивід: 30
print(dt.second)  # Вивід: 45

Клас datetime.timedelta

Цей клас представляє різницю між двома моментами часу, виражену в днях, секундах і мікросекундах. Він корисний для виконання арифметичних операцій з датами і часом.

Приклад використання:


import datetime

# Створення об'єкта timedelta
delta = datetime.timedelta(days=10, hours=5, minutes=30)
print(delta)  # Вивід: 10 days, 5:30:00
        
# Додавання timedelta до дати
dt = datetime.datetime(2023, 5, 24, 14, 30)
new_dt = dt + delta
print(new_dt)  # Вивід: 2023-06-03 20:00:00
        
# Віднімання timedelta з дати
earlier_dt = dt - delta
print(earlier_dt)  # Вивід: 2023-05-14 09:00:00

9.2 Форматування і парсинг дат і часу

Нам часто потрібно не просто працювати з датою, а перетворювати її в рядок певного виду. Зворотній процес, коли ми перетворюємо рядок в об'єкт, зазвичай називається парсингом. Для цих операцій в Python також є свої класи і методи:

Метод strftime()

Метод strftime() використовується для форматування об'єктів datetime в рядок за заданим форматом.

Приклад використання:


import datetime

dt = datetime.datetime(2023, 5, 24, 14, 30, 45)
    
# Форматування дати і часу
formatted_dt = dt.strftime("%Y-%m-%d %H:%M:%S")
print(formatted_dt)  # Вивід: 2023-05-24 14:30:45
    
# Форматування тільки дати
formatted_date = dt.strftime("%d-%m-%Y")
print(formatted_date)  # Вивід: 24-05-2023
    
# Форматування тільки часу
formatted_time = dt.strftime("%H:%M:%S")
print(formatted_time)  # Вивід: 14:30:45

Метод strptime()

Метод strptime() використовується для парсингу рядків в об'єкти datetime за заданим форматом.

Приклад використання:


import datetime

# Парсинг рядка в об'єкт datetime
date_str = "24-05-2023 14:30:45"
dt = datetime.datetime.strptime(date_str, "%d-%m-%Y %H:%M:%S")
print(dt)  # Вивід: 2023-05-24 14:30:45
    
# Парсинг рядка в об'єкт date
date_str = "24-05-2023"
d = datetime.datetime.strptime(date_str, "%d-%m-%Y").date()
print(d)  # Вивід: 2023-05-24
    
# Парсинг рядка в об'єкт time
time_str = "14:30:45"
t = datetime.datetime.strptime(time_str, "%H:%M:%S").time()
print(t)  # Вивід: 14:30:45

9.3 Робота з часовими поясами

Як показує практика, нашими сервісами користуються люди з усього світу, і, на жаль, вони живуть в різних країнах і у них різні часові пояси (timezone). Тому вам як програмісту потрібно вміти працювати з ними теж.

Ну і звісно в Python є клас і на цей випадок:

Клас timezone

Клас timezone з модуля datetime дозволяє працювати з часовими поясами.


import datetime

# Створення об'єкта datetime з часовим поясом UTC
utc_dt = datetime.datetime(2023, 5, 24, 14, 30, 45, tzinfo=datetime.timezone.utc)
print(utc_dt)  # Вивід: 2023-05-24 14:30:45+00:00
        
# Конвертація в інший часовий пояс
tokyo_tz = datetime.timezone(datetime.timedelta(hours=9))
tokyo_dt = utc_dt.astimezone(tokyo_tz)
print(tokyo_dt)  # Вивід: 2023-05-24 23:30:45+09:00

Ми розглянули бібліотеку datetime дуже оглядово, я б навіть сказав поверхнево. У майбутньому ми ще раз повернемося до неї і будемо вчитися використовувати її для більш конкретних задач. Зараз же я хотів просто вас з нею познайомити і розширити, так би мовити, ваш погляд на набір стандартних бібліотек.

Про будь-яку бібліотеку ви повинні в першу чергу знати, що вона є, і уявляти, що можна зробити з її допомогою. А список функцій, їх параметрів і всі їх можливості завжди можна почерпнути з офіційної документації.

1
Опитування
Декоратори, рівень 8, лекція 8
Недоступний
Декоратори
Декоратори
Коментарі (2)
ЩОБ ПОДИВИТИСЯ ВСІ КОМЕНТАРІ АБО ЗАЛИШИТИ КОМЕНТАР,
ПЕРЕЙДІТЬ В ПОВНУ ВЕРСІЮ
negoda Рівень 31
10 серпня 2025
Конец 14 уровня, а я все так-же не перестаю слышать "такого нам еще не обьясняли", эхх.
Євген Рівень 26
4 липня 2025
current_utc_time = datetime.now(timezone.utc) это код из решения второй задачи. такого в лекции не было