Модуль datetime
Основной функционал для работы с датами и временем сосредоточен в модуле datetime в виде следующих классов:
- date
- time
- datetime
Класс date
Для работы с датами воспользуемся классом date, который определен в модуле datetime. Для создания объекта date мы можем использовать конструктор date, который последовательно принимает три параметра: год, месяц и день.
| 1 | date(year, month, day) |
Например, создадим какую-либо дату:
| 1 2 3 4 | import datetime yesterday = datetime.date(2017,5, 2)print(yesterday) # 2017-05-02 |
Если необходимо получить текущую дату, то можно воспользоваться методом today():
| 1 2 3 4 5 | from datetime import datetoday = date.today()print(today) # 2017-05-03print("{}.{}.{}".format(today.day, today.month, today.year)) # 2.5.2017 |
С помощью свойств day, month, year можно получить соответственно день, месяц и год
Класс time
За работу с временем отвечает класс time. Используя его конструктор, можно создать объект времени:
| 1 | time([hour] [, min] [, sec] [, microsec]) |
Конструктор последовательно принимает часы, минуты, секунды и микросекунды. Все параметры необязательные, и если мы какой-то параметр не передадим, то соответствующее значение будет инициализироваться нулем.
| 1 2 3 4 5 6 7 8 9 10 | from datetime import time current_time = time()print(current_time) # 00:00:00 current_time = time(16, 25)print(current_time) # 16:25:00 current_time = time(16, 25, 45)print(current_time) # 16:25:45 |
Класс datetime
Класс datetime из одноименного модуля объединяет возможности работы с датой и временем. Для создания объекта datetime можно использовать следующий конструктор:
| 1 | datetime(year, month, day [, hour] [, min] [, sec] [, microsec]) |
Первые три параметра, представляющие год, месяц и день, являются обязательными. Остальные необязательные, и если мы не укажем для них значения, то по умолчанию они инициализируются нулем.
| 1 2 3 4 5 6 7 | from datetime import datetimedeadline = datetime(2017, 5, 10)print(deadline) # 2017-05-10 00:00:00 deadline = datetime(2017, 5, 10, 4, 30)print(deadline) # 2017-05-10 04:30:00 |
Для получения текущих даты и времени можно вызвать метод now():
| 1 2 3 4 5 6 7 8 9 | from datetime import datetimenow = datetime.now()print(now) # 2017-05-03 11:18:56.239443print("{}.{}.{} {}:{}".format(now.day, now.month, now.year, now.hour, now.minute)) # 3.5.2017 11:21print(now.date())print(now.time()) |
С помощью свойств day, month, year, hour, minute, second можно получить отдельные значения даты и времени. А через методы date() и time() можно получить отдельно дату и время соответственно.
Преобразование из строки в дату
Из функциональности класса datetime следует отметить метод strptime(), который позволяет распарсить строку и преобразовать ее в дату. Этот метод принимает два параметра:
| 1 | strptime(str, format) |
Первый параметр str представляет строковое определение даты и времени, а второй параметр – формат, который определяет, как различные части даты и времени расположены в этой строке.
Для определения формата мы можем использовать следующие коды:
- %d: день месяца в виде числа
- %m: порядковый номер месяца
- %y: год в виде 2-х чисел
- %Y: год в виде 4-х чисел
- %H: час в 24-х часовом формате
- %M: минута
- %S: секунда
Применим различные форматы:
| 1 2 3 4 5 6 7 8 9 | from datetime import datetimedeadline = datetime.strptime("22/05/2017", "%d/%m/%Y")print(deadline) # 2017-05-22 00:00:00 deadline = datetime.strptime("22/05/2017 12:30", "%d/%m/%Y %H:%M")print(deadline) # 2017-05-22 12:30:00deadline = datetime.strptime("05-22-2017 12:30", "%m-%d-%Y %H:%M")print(deadline) # 2017-05-22 12:30:00 |