Инструменты пользователя

Инструменты сайта


python:moduli:datetime

Даты и время

Модуль 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
 
Выполнение скрипта:
<code powershell>
Первая дата (гггг-мм-дд): 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
>>>
python/moduli/datetime.txt · Последние изменения: 2023/01/12 12:18 (внешнее изменение)