====Даты и время====
Модуль datetime (docs.python.org/3/library/datetime.html#module-datetime) поставляет классы для управления датой и временем различной степени сложности. Пока вычисления даты и времени поддерживаются, в центре внимания реализации - на эффективное извлечение члена для форматирования вывода и манипуляции. Модуль также поддерживает объекты, "осведомленные" о часовом поясе.
from datetime import date, datetime, timedelta
# date
today = date.today()
print(today) # 2020-01-25
print(today.day) # 25
print(today.month) # 1
print(today.year) # 2020
print(today.weekday()) # 5 - суббота (0 - 6)
# datetime
now = datetime.now()
print(now) # 2020-01-25 19:59:11.453869
now = datetime.today()
print(now) # 2020-01-25 19:59:11.453869
print(now.day) # 25
print(now.month) # 1
print(now.year) # 2020
print(now.weekday()) # 5 - суббота (0 - 6)
print(now.hour) # 19 hour
print(now.minute) # 59 minute
print(now.second) # 11 second
==Получить день недели==
days = ('понедельник', "вторник", "среда", "четверг", "пятница", "суббота", "воскресенье")
print(days[now.weekday()]) # суббота
==Форматирование даты d.strftime("%d/%m/%y")==
now = datetime.now()
print(now.strftime("%d.%m.%y")) #25.01.20
# День недели
now = datetime.now()
print(now.strftime("%A")) # Saturday
print(now.strftime("%a")) # Sat
==Использование локали==
import locale
locale.setlocale(locale.LC_ALL, 'ru_RU')
# с кодировкой locale.setlocale(locale.LC_ALL, 'ru_RU.UTF-8')
now = datetime.now()
print(now.strftime("%A")) # суббота
print(now.strftime("%a")) # Сб
print(f'Дата: {now.strftime("%A, %d %b %Y")}') # Дата: суббота, 25 янв 2020
print(f'время: {now.strftime("%H:%M:%S")}') # время: 20:21:05
#Вывод времени в соответстви с локалью
print(now.strftime('%c')) # 25.01.2020 20:22:13
print(now.strftime('%x')) # 25.01.2020
print(now.strftime('%X')) # 20:22:13
==Разница во времени==
now = datetime.today()
print(now.strftime('%c'))
# Прибавить интервал времени
print(now.strftime('%c')) # 25.01.2020 20:26:03
after = now + timedelta(days=1, hours=2, minutes=10)
print(after.strftime('%c')) # 26.01.2020 22:36:03
====Вычисление количества дней между датами и определение дат====
==Задача 1. Пользователь вводит две даты. Определить количество прошедших дней между ними.==
import datetime
a = input('Первая дата (гггг-мм-дд): ')
b = input('Вторая дата (гггг-мм-дд): ')
a = a.split('-')
b = b.split('-')
aa = datetime.date(int(a[0]),int(a[1]),int(a[2]))
bb = datetime.date(int(b[0]),int(b[1]),int(b[2]))
cc = aa-bb
print(cc) # output days and time
dd = str(cc)
print(dd.split()[0]) # only days
Выполнение скрипта:
Первая дата (гггг-мм-дд): 2012-04-13
Вторая дата (гггг-мм-дд): 2003-05-27
3244 days, 0:00:00
3244
Первая дата (гггг-мм-дд): 2003-05-27
Вторая дата (гггг-мм-дд): 2012-04-13
-3244 days, 0:00:00
-3244
==Задача 2. Определить количество дней между датой, введенной пользователем, и сегодняшним днем.==
a = input('Дата (гггг-мм-дд): ')
a = a.split('-')
aa = datetime.date(int(a[0]),int(a[1]),int(a[2]))
bb = datetime.date.today()
cc = aa-bb
dd = str(cc)
print(dd.split()[0])
Выполнение скрипта:
Дата (гггг-мм-дд): 2013-01-01
-17
==Задача 3. Определить, какая будет дата через заданные пользователем дату и количество дней от/до этой даты.==
import datetime
a = input('Дата (гггг-мм-дд): ')
b = input('Количество дней: ')
a = a.split('-')
aa = datetime.date(int(a[0]),int(a[1]),int(a[2]))
b = int(b)
bb = datetime.timedelta(days=b)
cc = aa+bb
print(cc)
Выполнение скрипта:
Дата (гггг-мм-дд): 2004-12-20
Количество дней: 1000
2007-09-16
>>> ==== RESTART ====
>>>
Дата (гггг-мм-дд): 2013-01-16
Количество дней: -100
2012-10-08
>>>
==Задача 4. Определить, какая будет/была дата через заданное пользователем количество дней от сегодняшней даты.==
b = input('Количество дней: ')
b = int(b)
a = datetime.date.today()
bb = datetime.timedelta(days=b)
cc = a+bb
print(cc)
Количество дней: 5
2013-01-23
>>> ===== RESTART =====
>>>
Количество дней: -5
2013-01-13
>>>