- Работа с датой и временем: модуль datetime
- Что находится внутри datetime?
- Класс datetime.date
- Класс datetime.time
- Класс datetime.timedelta
- Формат datetime
- Python strftime() — преобразование объекта datetime в строку
- Python strptime()- преобразование строки в объект datetime
- Обработка часового пояса в Python
Работа с датой и временем: модуль datetime
В этой статье мы разберемся, как работать с датой и временем в Python при помощи модуля datetime. И для начала давайте напишем несколько простых программ, связанных с датой и временем.
Пример 1: Получение текущей даты и времени.
import datetime datetime_object = datetime.datetime.now() print(datetime_object)
Когда вы запустите программу, результат будет примерно таким:
В этом примере мы импортировали модуль datetime с помощью оператора import datetime .
Одним из классов, определенных в модуле datetime, является класс datetime . После импортирования модуля мы использовали метод now() для создания объекта datetime , содержащего текущие локальные дату и время.
Пример 2: Получение текущей даты.
import datetime date_object = datetime.date.today() print(date_object)
Когда вы запустите программу, результат будет примерно таким:
В этой программе мы использовали метод today() , определенный в классе date , чтобы получить объект date , содержащий текущую локальную дату.
Что находится внутри datetime?
Мы можем использовать функцию dir() для получения списка, содержащего все атрибуты модуля datetime.
import datetime print(dir(datetime))
Когда вы запустите программу, вывод будет следующим:
[‘MAXYEAR’, ‘MINYEAR’, ‘__builtins__’, ‘__cached__’, ‘__doc__’, ‘__file__’, ‘__loader__’, ‘__name__’, ‘__package__’, ‘__spec__’, ‘date’, ‘datetime’, ‘datetime_CAPI’, ‘sys’, ‘time’, ‘timedelta’, ‘timezone’, ‘tzinfo’]Наиболее часто используемыми классами в модуле datetime являются:
Класс datetime.date
Объект date представляет дату (год, месяц и день).
Пример 3: объект date для представления даты.
import datetime d = datetime.date(2020, 6, 29) print(d)
Когда вы запустите программу, вывод будет следующим:
В приведенном выше примере date() является конструктором класса date . Конструктор принимает три аргумента: год, месяц и день.
Переменная d — это объект date .
Вы можете создавать объекты класса date , предварительно импортировав модуль datetime, а можете импортировать только класс date из модуля datetime. Вот как это делается:
from datetime import date a = date(2020, 6, 29) print(a) # 2020-06-29
Пример 4: Получение текущей даты.
Для получения информации о текущей дате можно воспользоваться методом today() .
from datetime import date today = date.today() print("Current date wp-block-separator"/>Пример 5: получение даты из метки времени (timestamp).
Мы также можем создавать объекты
date
из метки времени (timestamp). Термин timestamp употребляется для обозначения POSIX-времени — количества секунд, прошедшего с 00:00:00 UTC 1 января, 1970 года. Вы можете преобразовать метку времени в дату при помощи методаfromtimestamp()
.from datetime import date timestamp = date.fromtimestamp(1326244364) print("Date wp-block-separator"/>Пример 6: вывод текущего года, месяца и дня.
Мы легко можем получить год, месяц, день, день недели и т. д. из объекта
date
. Вот как это делается:from datetime import date today = date.today() print("Current year:", today.year) print("Current month:", today.month) print("Current day:", today.day)Когда вы запустите программу, результат будет примерно таким:
Класс datetime.time
Экземпляр класса time представляет собой время (часы, минуты, секунды и микросекунды).
Пример 7: объект 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 wp-block-separator"/>Пример 8: вывод часов, минут, секунд и микросекунд.
После того как вы создадите объект
time
, вы можете легко получить его атрибуты, такие как часы, минуты и т. д.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="generic" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">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)Когда вы запустите программу, вывод будет следующим:
Первые три аргумента year , month и day в конструкторе datetime() являются обязательными. Отсутствующие данные будут заполнены нулями по умолчанию.
Пример 10: вывод года, месяца, часа, минуты и метки времени.
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 wp-block-separator"/>Пример 11: получение текущего момента времени.
Мы можем получить информацию о текущем моменте времени не только с помощью уже упомянутого метода
now()
, но и с помощьюtoday()
.from datetime import datetime date = datetime.today() print(date) date = datetime.now() print(date)Когда вы запустите программу, результат будет примерно таким:
Класс datetime.timedelta
Объект timedelta представляет разницу между двумя моментами времени.
Пример 12: разница между двумя моментами времени.
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 wp-block-separator"/>Пример 13: разница между двумя объектами 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 wp-block-separator"/>Пример 14: отрицательный объект timedelta.
from datetime import timedelta t1 = timedelta(seconds = 33) t2 = timedelta(seconds = 54) t3 = t1 - t2 print("t3 =", t3) print("t3 wp-block-separator"/>Пример 15: интервал времени в секундах.
Вы можете получить общее количество секунд объекта
timedelta
, используя методtotal_seconds()
.from datetime import timedelta t = timedelta(days = 5, hours = 1, seconds = 33, microseconds = 233423) print("total seconds https://docs.python.org/3/library/datetime.html#timedelta-objects" target="_blank" rel="noopener noreferrer">документации.Формат datetime
Представление даты и времени может отличатся в разных странах, организациях и т. д. В США, например, чаще всего используется формат «мм/дд/гггг», тогда как в Великобритании более распространен формат «дд/мм/гггг».
В Python для работы с форматами есть методы
strftime()
иstrptime()
.Python strftime() — преобразование объекта datetime в строку
Метод
strftime()
определен в классахdate
,datetime
иtime
. Он создает форматированную строку из заданного объектаdate
,datetime
илиtime
.Пример 16: форматирование даты с использованием метода strftime().
from datetime import datetime 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)Когда вы запустите программу, результат будет примерно таким:
Здесь %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]
Чтобы узнать больше о методе strftime() и кодах форматирования, перейдите по ссылке.
Python strptime()- преобразование строки в объект datetime
Метод strptime() создает объект datetime из заданной строки (представляющей дату и время).
Пример 17: метод 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 https://www.programiz.com/python-programming/datetime/strptime" target="_blank" rel="noopener noreferrer">ссылке чтобы узнать больше о методеstrptime()
.Обработка часового пояса в Python
Предположим, вы работаете над проектом и должны отображать дату и время в зависимости от часового пояса пользователей. Вместо того, чтобы пытаться обрабатывать часовой пояс самостоятельно, мы предлагаем вам использовать модуль 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"))Когда вы запустите программу, результат будет примерно таким:
Здесь datetime_NY и datetime_London — это объекты datetime , содержащие текущую дату и время соответствующего часового пояса.