Основные тезисы
1. Чтобы создать объект date
, Вы должны передать аргументы года, месяца и дня следующим образом:
from datetime import date
my_date = date(2020, 9, 29)
print("Year:", my_date.year) # Year: 2020
print("Month:", my_date.month) # Month: 9
print("Day:", my_date.day) # Day: 29
Объект date
имеет три атрибута (только для чтения): год, месяц и день.
2. Метод today
возвращает объект даты, представляющий текущую местную дату:
from datetime import date
print("Today:", date.today()) # Displays: Today: 2020-09-29
3. В Unix отметка времени выражает количество секунд с 1 января 1970 г., 00:00:00 (UTC). Эту дату называют "эпохой Unix", потому что с нее начался отсчет времени в системах Unix. Временная метка на самом деле представляет собой разницу между определенной датой (включая время) и 1 января 1970 года, 00:00:00 (UTC), выраженную в секундах. Чтобы создать объект даты из метки времени, мы должны передать метку времени Unix методу fromtimestamp
:
from datetime import date
import time
timestamp = time.time()
d = date.fromtimestamp(timestamp)
Примечание: функция time
возвращает количество секунд с 1 января 1970 г. до текущего момента в виде числа с плавающей запятой.
4. Конструктор класса time
принимает шесть аргументов (hour, minute, second, microsecond, tzinfo и fold). Каждый из этих аргументов является необязательным.
from datetime import time
t = time(13, 22, 20)
print("Hour:", t.hour) # Hour: 13
print("Minute:", t.minute) # Minute: 22
print("Second:", t.second) # Second: 20
5. Модуль time
содержит функцию sleep
, которая приостанавливает выполнение программы на заданное количество секунд, например:
import time
time.sleep(10)
print("Hello world!") # This text will be displayed after 10 seconds.
6. В модуле datetime
дата и время могут быть представлены либо как отдельные объекты, либо как один объект. Класс, объединяющий дату и время, называется datetime. Все аргументы, переданные конструктору, переходят в атрибуты класса только для чтения. Это year, month, day, hour, minute, second, microsecond, tzinfo и fold:
from datetime import datetime
dt = datetime(2020, 9, 29, 13, 51)
print("Datetime:", dt) # Displays: Datetime: 2020-09-29 13:51:00
7. Метод strftime
принимает только один аргумент в виде строки, определяющей формат, который может состоять из директив. Директива - это строка, состоящая из символа %
(процент) и буквы нижнего или верхнего регистра. Ниже приведены некоторые полезные директивы:
%Y
- возвращает год с столетием в виде десятичного числа;%m
- возвращает месяц в виде десятичного числа с нулями;%d
- возвращает день в виде десятичного числа с нулями;%H
- возвращает час в виде десятичного числа с нулями;%M
- возвращает минуты в виде десятичного числа с нулями;%S
- возвращает секунду как десятичное число с нулевым дополнением.
Пример:
from datetime import date
d = date(2020, 9, 29)
print(d.strftime('%Y/%m/%d')) # Displays: 2020/09/29
8. Можно выполнять вычисления для объектов date
и datetime
, например:
from datetime import date
d1 = date(2020, 11, 4)
d2 = date(2019, 11, 4)
d = d1 - d2
print(d) # Displays: 366 days, 0:00:00.
print(d * 2) # Displays: 732 days, 0:00:00.
Результат вычитания возвращается как объект timedelta
, который выражает разницу в днях между двумя датами в примере выше.
Обратите внимание, что также отображается разница в часах, минутах и секундах. Объект timedelta
можно использовать для дальнейших вычислений (например, Bы можете умножить его на 2).
Упражнение 1
Что выведет следующий код?
from datetime import time
t = time(14, 39)
print(t.strftime("%H:%M:%S"))
Упражнение 2
Что выведет следующий код?
from datetime import datetime
dt1 = datetime(2020, 9, 29, 14, 41, 0)
dt2 = datetime(2020, 9, 28, 14, 41, 0)
print(dt1 - dt2)