- Как управлять датой и временем в Python?
- Как получить текущую дату и время в Python?
- Как получить текущую дату?
- Что внутри datetime?
- Класс datetime.date
- Объект Date для представления даты
- Пример: Получить текущую дату
- Пример: Вывести сегодняшний год, месяц и день
- datetime.time
- Объект времени для представления времени
- Вывод часа, минуты, секунды и микросекунды
- datetime.datetime
- Объект datetime
- Напечатать год, месяц, час, минуту и отметку времени
- datetime.timedelta
- Разница между двумя датами и временем
- Разница между двумя объектами timedelta
- Печать отрицательного объекта timedelta
- Продолжительность времени в секундах
- Дата и время в формате Python
- Метод strftime() ‒ объект datetime для строки
- Форматирование даты с помощью strftime()
- Python strptime() ‒ строка для даты и времени
- strptime()
- Обработка часового пояса
Как управлять датой и временем в Python?
В этой статье вы научитесь управлять датой и временем в Python с помощью примеров.
В Python есть модуль datetime для работы с датой и временем. Прежде чем копать глубже, давайте создадим несколько простых программ, связанных с датой и временем.
Как получить текущую дату и время в Python?
Простая программа с помощью которой можно получить текущую дату и время в Python:
import datetime datetime_object = datetime.datetime.now() print(datetime_object)
Когда вы запустите программу, результат будет примерно таким:
Здесь мы импортировали модуль datetime, используя оператор import datetime.
Один из классов, определенных в модуле datetime, ‒ это класс datetime. Затем мы использовали метод now() для создания объекта datetime, содержащего текущие локальные дату и время.
Как получить текущую дату?
import datetime date_object = datetime.date.today() print(date_object)
Когда вы запустите программу, результат будет примерно таким:
В этой программе мы использовали метод today(), определенный в классе даты, чтобы получить объект даты, содержащий текущую локальную дату.
Что внутри datetime?
Мы можем использовать функцию dir(), чтобы получить список, содержащий все атрибуты модуля.
import datetime print(dir(datetime))
Когда вы запустите программу, вывод будет:
['MAXYEAR', 'MINYEAR', '__builtins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__', '__package__', '__spec__', '_divide_and_round', 'date', 'datetime', 'datetime_CAPI', 'time', 'timedelta', 'timezone', 'tzinfo']
Обычно используемые классы в модуле datetime:
Класс datetime.date
Вы можете создавать экземпляры объектов даты из класса даты. Объект представляет собой дату (год, месяц и день).
Объект Date для представления даты
import datetime d = datetime.date(2019, 4, 13) print(d)
Когда вы запустите программу, вывод будет:
В приведенном выше примере date() является конструктором класса даты. Конструктор принимает три аргумента: год, месяц и день.
Переменная a ‒ объект даты.
Мы можем импортировать только класс даты из модуля datetime. Вот как:
from datetime import date a = date(2019, 4, 13) print(a)
Пример: Получить текущую дату
Вы можете создать объект даты, содержащий текущую дату, используя метод класса с именем today(). Вот как:
from datetime import date today = date.today() print("Current date EnlighterJSRAW" data-enlighter-language="python">from datetime import date timestamp = date.fromtimestamp(1326244364) print("Date EnlighterJSRAW" data-enlighter-language="python">Date = 2012-01-11
Пример: Вывести сегодняшний год, месяц и день
Мы можем легко получить год, месяц, день, день недели и т.д. из объекта даты. Вот как:
from datetime import date # date object of today's date today = date.today() print("Current year:", today.year) print("Current month:", today.month) print("Current day:", today.day)
datetime.time
Объект времени, созданный из класса времени, представляет местное время.
Объект времени для представления времени
from datetime import time # time(hour = 0, minute = 0, second = 0) a = time() print("a =", a) # time(hour, minute and second) b = time(11, 34, 56) print("b =", b) # time(hour, minute and second) c = time(hour = 11, minute = 34, second = 56) print("c =", c) # time(hour, minute, second, microsecond) d = time(11, 34, 56, 234566) print("d EnlighterJSRAW" data-enlighter-language="python">a = 00:00:00 b = 11:34:56 c = 11:34:56 d = 11:34:56.234566
Вывод часа, минуты, секунды и микросекунды
После создания объекта времени вы можете легко распечатать его атрибуты, такие как час , минута и т.д.
from datetime import time a = time(11, 34, 56) print("hour =", a.hour) print("minute =", a.minute) print("second =", a.second) print("microsecond EnlighterJSRAW" data-enlighter-language="python">hour = 11 minute = 34 second = 56 microsecond = 0
Обратите внимание, что мы не передали аргумент микросекунды. Следовательно, печатается его значение по умолчанию 0.
datetime.datetime
В модуле datetime есть класс с именем dateclass, который может содержать информацию как из объектов даты, так и времени.
Объект datetime
from datetime import datetime #datetime(year, month, day) a = datetime(2018, 11, 28) print(a) # datetime(year, month, day, hour, minute, second, microsecond) b = datetime(2017, 11, 28, 23, 55, 59, 342380) print(b)
Когда вы запустите программу, вывод будет:
2018-11-28 00:00:00 2017-11-28 23:55:59.342380
Первые три аргумента год, месяц и день в конструкторе datetime() являются обязательными.
Напечатать год, месяц, час, минуту и отметку времени
from datetime import datetime a = datetime(2017, 11, 28, 23, 55, 59, 342380) print("year =", a.year) print("month =", a.month) print("hour =", a.hour) print("minute =", a.minute) print("timestamp EnlighterJSRAW" data-enlighter-language="python">year = 2017 month = 11 day = 28 hour = 23 minute = 55 timestamp = 1511913359.34238
datetime.timedelta
Объект timedelta представляет разницу между двумя датами или временем.
Разница между двумя датами и временем
from datetime import datetime, date t1 = date(year = 2018, month = 7, day = 12) t2 = date(year = 2017, month = 12, day = 23) t3 = t1 — t2 print(«t3 =», t3) t4 = datetime(year = 2018, month = 7, day = 12, hour = 7, minute = 9, second = 33) t5 = datetime(year = 2019, month = 6, day = 10, hour = 5, minute = 55, second = 13) t6 = t4 — t5 print(«t6 =», t6) print(«type of t3 =», type(t3)) print(«type of t6 EnlighterJSRAW» data-enlighter-language=»python»>t3 = 201 days, 0:00:00 t6 = -333 days, 1:14:20 type of t3 = type of t6 =
Обратите внимание, что и t3, и t6 относятся к типу .
Разница между двумя объектами timedelta
from datetime import timedelta t1 = timedelta(weeks = 2, days = 5, hours = 1, seconds = 33) t2 = timedelta(days = 4, hours = 11, minutes = 4, seconds = 54) t3 = t1 - t2 print("t3 EnlighterJSRAW" data-enlighter-language="python">t3 = 14 days, 13:55:39
Здесь мы создали два объекта timedelta t1 и t2 , и их разница отображается на экране.
Печать отрицательного объекта timedelta
from datetime import timedelta t1 = timedelta(seconds = 33) t2 = timedelta(seconds = 54) t3 = t1 - t2 print("t3 =", t3) print("t3 EnlighterJSRAW" data-enlighter-language="python">t3 = -1 day, 23:59:39 t3 = 0:00:21
Продолжительность времени в секундах
Вы можете получить общее количество секунд в объекте timedelta, используя метод total_seconds().
from datetime import timedelta t = timedelta(days = 5, hours = 1, seconds = 33, microseconds = 233423) print("total seconds EnlighterJSRAW" data-enlighter-language="python">total seconds = 435633.233423
Вы также можете найти сумму двух дат и времени, используя оператор +. Кроме того, вы можете умножать и делить объект timedelta на целые числа и числа с плавающей запятой.
Дата и время в формате Python
Дата и время могут быть разными в разных местах, организациях и т.д. в США чаще используется мм/дд/гггг, а в Великобритании ‒ дд/мм/гггг.
Для этого в Python есть методы strftime() и strptime().
Метод strftime() ‒ объект datetime для строки
Метод определяется в классах date, datetime и time. Метод создает форматированную строку из заданного объекта даты, даты, времени или времени.
Форматирование даты с помощью strftime()
from datetime import datetime # current date and time now = datetime.now() t = now.strftime("%H:%M:%S") print("time:", t) s1 = now.strftime("%m/%d/%Y, %H:%M:%S") # mm/dd/YY H:M:S format print("s1:", s1) s2 = now.strftime("%d/%m/%Y, %H:%M:%S") # dd/mm/YY H:M:S format print("s2:", s2)
Когда вы запустите программу, результат будет примерно таким:
time: 04:34:52 s1: 12/26/2018, 04:34:52 s2: 26/12/2018, 04:34:52
Здесь % Y,% m,% d,% H и т.д. являются кодами формата. Метод strftime() принимает один или несколько кодов формата и возвращает на его основе отформатированную строку.
В приведенной выше программе t s1 и s2 -‒ это строки:
- % Y — год [0001, …, 2018, 2019, …, 9999]
- % m — месяц [01, 02, …, 11, 12]
- % d — день [01, 02, …, 30, 31]
- % H — час [00, 01, …, 22, 23
- % M — минута [00, 01, …, 58, 59]
- % S — секунда [00, 01, …, 58, 59]
Python strptime() ‒ строка для даты и времени
Метод создает объект datetime из заданной строки (представляющей дату и время).
strptime()
from datetime import datetime date_string = "21 June, 2018" print("date_string =", date_string) date_object = datetime.strptime(date_string, "%d %B, %Y") print("date_object EnlighterJSRAW" data-enlighter-language="python">date_string = 21 June, 2018 date_object = 2018-06-21 00:00:00
Метод принимает два аргумента:
Кстати, коды формата% d,% B и% Y используются для дня, месяца (полное имя) и года соответственно.
Обработка часового пояса
Предположим, вы работаете над проектом и вам нужно отображать дату и время в соответствии с их часовым поясом. Вместо того, чтобы пытаться самостоятельно обрабатывать часовой пояс, мы предлагаем вам использовать сторонний модуль pytZ.
from datetime import datetime import pytz local = datetime.now() print("Local:", local.strftime("%m/%d/%Y, %H:%M:%S")) tz_NY = pytz.timezone('America/New_York') datetime_NY = datetime.now(tz_NY) print("NY:", datetime_NY.strftime("%m/%d/%Y, %H:%M:%S")) tz_London = pytz.timezone('Europe/London') datetime_London = datetime.now(tz_London) print("London:", datetime_London.strftime("%m/%d/%Y, %H:%M:%S"))
Когда вы запустите программу, результат будет примерно таким:
Local time: 2018-12-20 13:10:44.260462 America/New_York time: 2018-12-20 13:10:44.260462 Europe/London time: 2018-12-20 13:10:44.260462
Здесь datetime_NY и datetime_London ‒ это объекты, содержащие текущую дату и время соответствующего часового пояса.