На цьому уроці ми дізнаємося як працює дата у Python. Як зручно опрацьовувати час та дати за допомогою спеціальної бібліотеки datetime. Ми розглянемо ключові функції, які дозволяють отримувати поточну дату, форматувати її, додавати або віднімати дні, порівнювати дати та багато іншого. Це дуже корисний інструмент для створення програм, що працюють з календарем, графіками або просто потребують контролю часу.
Як працює дата у Python
Для того, щоб працювати з датою, треба підключити бібліотеку:
import datetime
Втім, якщо підключити так, то треба буде писати кожен раз datetime.datetime.now(), щоб викликати функцію. Тому є простіший варіант, який дозволить скоротити команди:
Кращий варіант:
from datetime import * # тоді функції викликаємо так datetime.now()
Деякі функції бібліотеки :
date(year, month, day) – стандартна дата. Атрибути: year, month, day. Незмінний об’єкт.
time(hour=0, minute=0, second=0, microsecond=0, tzinfo=None) – стандартний час, не залежить від дати. Атрибути: hour, minute, second, microsecond, tzinfo.
datetime(year, month, day, hour=0, minute=0, second=0, microsecond=0, tzinfo=None) – дата та час одночасно. (year, month, day – обов’язково треба вказувати)
timedelta – різниця між двома моментами часу з точністю до мілісекунд
some_date.weekday() – день тижня у вигляді числа, понеділок – 0, неділя – 6.
some_date.isoweekday() – день тижня у вигляді числа, понеділок – 1, неділя – 7.
some_date.strftime(format) – виводить дату у заданому форматі.
datetime.now() – дата та час на зараз.
А ось табличка з директивами, які допоможуть вивести дату у різних форматах
Директива | Значення | Приклад |
%A | День тижня | Sunday, Monday, …, Saturday (en_US); |
%w | Номер дня тижня | 0, 1, …, 6 |
%d | день місяця | 01, 02, …, 31 |
%B | місяць | January, February, …, December |
%m | номер місяця | 01, 02, …, 12 |
%Y | рік | 2019 |
%H | кількість годин(від 0 до 24) | 00, 01, …, 23 |
%p | AM – якщо час до полудня PM – якщо час після полудня | AM, PM (en_US); |
%M | хвилини | 00, 01, …, 59 |
%S | секунди | 00, 01, …, 59 |
%f | мікросекунди | 000000, 000001, …, 999999 |
Практика
1: Напишімо програму, в якій ми задаємо сьогоднішню дату, а вона визначає номер дня тижня для цього дня (0 – понеділок, 6- неділя):
from datetime import date
d = date(2025, 4, 6) # рік, місяць, день
print ("Сьогодні : "+str(d))
print ("Номер дня тижня : "+str(d.weekday()))

2: Змініть попередню програму. Нехай користувач вводить свій рік, місяць і день народження, а програма виводитиме йому номер дня тижня, в який він народився.
3: Дізнаймося поточну дату та час і додамо таку магічну команду для виводу дня:
today = datetime.now()
t = today.strftime("%A, %d. %B %Y %H:%M %p")
print(t)
Спробуйте розгадати, що виводить кожна буква зі знаком %
Після того, як розгадаєте, вище ви зможете знайти табличку з описом цих знаків.
4: Запишіть у змінну даті та час на зараз: datetime.now()
- виведіть тільки рік
- виведіть тільки день тижня
- виведіть тільки години, хвилини, секунди і мілісекунди
5: Тут наведено приклад програми, яка рахує, скільки часу пройшло з дня вашого народження(підправте відповідні цифри):
today = datetime.now()
dn = datetime(2000, 2, 9)
delta=today-dn
print ("Мені вже : "+str(delta))
6: Змініть програму так, щоб юзер сам вводив рік, місяць і день свого народження, а програма видавала йому скільки часу пройшло з дня його народження.
7: Дізнаймося, який день буде через 34 дні і який був 34 дні тому.
today = datetime.today()
period = timedelta(days=34)
Дізнаємося, яка число буде через 34 дні.
new_date = today+period
print (f"через {str (period)} дні буде {str (new_date)}")
Дізнаємося, яка число дуло 34 дні тому.
new_date = today-period
print (f"{str (period)} дня тому було {str (new_date)}")

8: Кажуть, що можна навчитись сідати на шпагат за 62 дні. Через скільки часу ви сядете на шпагат, якщо почнете тренуватися від сьогодні?
9: Кажуть, що можна набути нову звичку на 21 день. Через скільки часу ви здобудете нову звичку, якщо почнете тренуватися прямо зараз ?

Домашня робота
1: Запишіть у змінну поточну дату та час за допомогою: datatimeNOW=datetime.now()
Використовуючи strftime, виведіть :
- місяць, який у нас зараз
- день тижня
- години хвилини
- секунди, мікросекунди
Приклад роботи програми:
Month: January
Day Of Week: Sunday
Time: 13:10
Seconds and microseconds: 34.454554
Підказка до номера 1:
%f мікросекунди

2: Напишіть програму-органайзер: користувач вводить дату, а програма має обчислити, який це день тижня та вивести розклад гуртків на цей день (розклад гуртків можете взяти нижче, або написати розклад своїх гуртків (не менше трьох)):
Приклад розкладу:
У понеділок середу та п’ятницю – англійська
у вівторок та п’ятницю – футбол
у середу та неділю – програмування
в інші дні – відпочинок
3: Виведіть поточний час, як у завданні 1 з домашки, тільки не через двокрапку, а так, як показано у приладі:
Приклад:
Time: 16 hours 10 minutes

Level Up!
Дата у Python
1: Роздивіться приклад. Що він рахує?
a = input('Дата (рррр-мм-дд): ')
a = a.split('-')
aa = date(int(a[0]),int(a[1]),int(a[2]))
bb = date.today()
cc = aa-bb
dd = str(cc)
print(dd.split()[0])

2: Створіть програму, в якій користувач вводить дату, а програма визначає, який це день тижня і дає користувачеві побажання або пораду цього дня тижня (побажання придумайте самі)
Приклад:
Введіть дату(рррр-мм-дд): 2019-01-20
У неділю краще відпочивати, здійснювати прогулянки та мислити спонтанно
3: Складіть календар найулюбленіших свят у вашій родині (3-4 свята). Програма має порахувати, скільки днів залишилося до кожного зі свят
4: День програміста відзначається на 256-й день року. Щороку це різна дата. Якого числа відзначатимуть цьогорічний день програміста? (складіть програму, яка це визначить)
Більше команд дивись тут w3schools.com і тут : docs.python.org
Не зупиняйтесь у вивченні Python! До зустрічі на наступних уроках!