Модуль datetime в Python

 8530

Python має модуль datetime для роботи з датою та часом.

Отримання поточної дати та часу в Python

Для отримання поточної дати та часу використовується метод now(). Наприклад:

Результат:

2022-12-27 08:26:49.219717

Тут ми імпортували модуль datetime за допомогою стейтменту import datetime.

Один з класів, визначених у модулі datetime — це клас datetime. Ми використали метод now() для створення об’єкта datetime, який містить поточну локальну дату та час.

Розглянемо приклад отримання лише поточної дати:

Результат:

2022-12-27

Ми використали метод today(), визначений у класі date, для отримання об’єкта date, який містить поточну локальну дату.

Атрибути модуля datetime

Ми можемо використати функцію dir() для отримання списку, що містить усі атрибути модуля:

Результат:

['MAXYEAR', 'MINYEAR', '__builtins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__', '__package__', '__spec__', '_divide_and_round', 'date', 'datetime', 'datetime_CAPI', 'time', 'timedelta', 'timezone', 'tzinfo']

Серед усіх атрибутів найчастіше використовуються:

   datetime.datetime — представляє один момент часу, який включає дату та час;

   datetime.date — представляє дату (рік, місяць та день) без часу;

   datetime.time — представляє час (година, хвилина, секунда та мікросекунда) без дати;

   datetime.timedelta — представляє тривалість періоду часу, яка може бути використана для виконання арифметичних операцій з об’єктами типу datetime.

Клас datetime.date в Python

В Python ми можемо створювати об’єкти date з класу date. Об’єкт date представляє дату (рік, місяць та день). Наприклад:

Результат:

2022-12-25

Тут date() — це конструктор класу date. Конструктор приймає три аргументи: year, month та day.

Також ми можемо імпортувати тільки клас date із модуля datetime. Наприклад:

Результат:

2022-12-25

Тут стейтмент from datetime import date імпортує тільки клас date з модуля datetime.

Ми також можемо створити об’єкт date, який містить поточну дату, використовуючи метод класу today(). Наприклад:

Результат:

Today's date = 2022-12-27

Ми також можемо створювати об’єкти date з тимчасової мітки.

Тимчасова мітка Unix — це кількість секунд між конкретною датою та 1 січня 1970 року за Всесвітнім координованим часом (скор. “UTC” від англ. Coordinated Universal Time”). Ми можемо конвертувати тимчасову мітку на дату, використовуючи метод fromtimestamp(). Наприклад:

Результат:

Date = 2012-01-11

Ще ми можемо отримати рік, місяць, день, день тижня і т.д. з об’єкта date окремо. Наприклад:

Результат:

Current year: 2022
Current month: 12
Current day: 27

Тут ми вивели атрибути об’єкта date, а саме year, month та day.

Клас datetime.time в Python

Об’єкт time, створений із класу time, представляє локальний час.

Результат:

a = 00:00:00
b = 11:34:56
c = 11:34:56
d = 11:34:56.234566

Як тільки ми створюємо об’єкт time, ми можемо легко виводити його атрибути, такі як hour, minute і т.д. Наприклад:

Результат:

Зверніть увагу, що ми не передали аргумент microsecond. Отже, виводиться його значення за замовчуванням 0.

Клас datetime.datetime в Python

Модуль datetime має клас datetime, який може містити інформацію з двох об’єктів date та time.

Результат:

2022-12-28 00:00:00
2022-12-28 23:55:59.342380

Перші три аргументи year, month та day у конструкторі datetime() обов’язкові.

Розглянемо приклад виведення року, місяця, години, хвилини та тимчасової мітки:

Результат:

year = 2022
month = 12
day = 28
hour = 23
minute = 55
timestamp = 1511913359.34238

Клас datetime.timedelta в Python

Об’єкт timedelta є різницею між двома датами або часом. Наприклад:

Результат:

t3 = 201 days, 0:00:00
t6 = -333 days, 1:14:20
Type of t3 = <class 'datetime.timedelta'>
Type of t6 = <class 'datetime.timedelta'>

Зверніть увагу, що t3 та t6 є об’єктами типу <class 'datetime.timedelta'>.

Різниця між двома об’єктами timedelta:

Результат:

t3 = 14 days, 13:55:39

Тут ми створили два об’єкти t1 та t2 типу timedelta, і їхня різниця виведена на екран.

Ми також можемо отримати загальну кількість секунд в об’єкті timedelta, використовуючи метод total_seconds(). Наприклад:

Результат:

Total seconds = 435633.233423

Форматування datetime в Python

Спосіб подання дати та часу може бути різним. У США використовують формат mm/dd/yyyy, тоді як у Великобританії використовують формат dd/mm/yyyy. Python має методи strftime() та strptime() для відображення дати та часу в різних форматах.

Метод strftime() в Python

Метод strftime() визначений у класах date, datetime та time і створює форматований рядок з переданих об’єктів date, datetime або time. Наприклад:

Результат:

time: 04:34:52
s1: 12/26/2018, 04:34:52
s2: 26/12/2018, 04:34:52

Тут %Y, %m, %d, %h і т.д. — це коди формату. Метод strftime() приймає один або кілька кодів формату та повертає на їх основі форматований рядок.

У цьому прикладі t, s1 та s2 — це рядки.

Нижче наведено деякі коди формату:

   %Y — рік [0001,..., 2018, 2019,..., 9999];

   %m — місяць [01, 02, ..., 11, 12];

   %d — день [01, 02, ..., 30, 31];

   %H — година [00, 01, ..., 22, 23];

   %M — хвилина [00, 01, ..., 58, 59];

   %S — секунда [00, 01, ..., 58, 59].

Метод strptime() в Python

Метод strptime() створює об’єкт datetime з переданого рядка (представляючи дату та час). Наприклад:

Результат:

date_string = 25 december, 2022
date_object = 2018-06-21 00:00:00

Метод strptime() приймає два аргументи:

   рядок, який представляє дату та час;

   код формату, еквівалентний першому аргументу.

До речі, коди формату %d%B та %Y використовуються для day, month (повна назва) та year відповідно.

Часові пояси в Python

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

Результат:

Local: 12/27/2022, 09:40:19
NY: 12/27/2022, 04:40:19
London: 12/27/2022, 09:40:19

Тут datetime_NY та datetime_London є об’єктами datetime, що містять поточну дату та час відповідно до їх часових поясів.

Оцінити статтю:

1 Зірка2 Зірки3 Зірки4 Зірки5 Зірок (12 оцінок, середня: 4,42 з 5)
Завантаження...

Залишити відповідь

Ваш E-mail не буде опублікований. Обов'язкові поля відмічені *