0 added
0 removed
Original
2026-01-01
Modified
2026-02-21
1
<p><a>#статьи</a></p>
1
<p><a>#статьи</a></p>
2
<ul><li>3 апр 2025</li>
2
<ul><li>3 апр 2025</li>
3
<li>0</li>
3
<li>0</li>
4
</ul><p>Управляем временем в Python.</p>
4
</ul><p>Управляем временем в Python.</p>
5
<p>Иллюстрация: Оля Ежак для Skillbox Media</p>
5
<p>Иллюстрация: Оля Ежак для Skillbox Media</p>
6
<p>Пишет о сетях, инструментах для разработчиков и языках программирования. Любит готовить, играть в инди‑игры и программировать на Python.</p>
6
<p>Пишет о сетях, инструментах для разработчиков и языках программирования. Любит готовить, играть в инди‑игры и программировать на Python.</p>
7
<p>Разработчикам часто надо получить точное время с учётом часового пояса, чтобы вывести эти данные пользователю или запланировать выполнение функции. Если неправильно обработать данные, то можно нарушить логику программы и доставить неудобства юзерам.</p>
7
<p>Разработчикам часто надо получить точное время с учётом часового пояса, чтобы вывести эти данные пользователю или запланировать выполнение функции. Если неправильно обработать данные, то можно нарушить логику программы и доставить неудобства юзерам.</p>
8
<p>Последствия ошибок с неправильной обработкой даты и времени бывают масштабными. Например, 1 марта 2010 года пользователи старых моделей PlayStation 3 столкнулись с <a>массовым сбоем</a>в работе консоли. Ошибка привела к тому, что игроки не могли пользоваться консолью. Проблема затронула миллионы устройств по всему миру и длилась около суток, пока Sony не выпустила исправление.</p>
8
<p>Последствия ошибок с неправильной обработкой даты и времени бывают масштабными. Например, 1 марта 2010 года пользователи старых моделей PlayStation 3 столкнулись с <a>массовым сбоем</a>в работе консоли. Ошибка привела к тому, что игроки не могли пользоваться консолью. Проблема затронула миллионы устройств по всему миру и длилась около суток, пока Sony не выпустила исправление.</p>
9
<p>Сбой произошёл из-за ошибки с обработкой високосного года. Внутренние часы консоли приняли 2010 год за високосный. В результате 28 февраля 2010 года система перешла на несуществующую дату - 29 февраля 2010 года. Из-за этого сломались система проверки трофеев и соединение с PlayStation Network.</p>
9
<p>Сбой произошёл из-за ошибки с обработкой високосного года. Внутренние часы консоли приняли 2010 год за високосный. В результате 28 февраля 2010 года система перешла на несуществующую дату - 29 февраля 2010 года. Из-за этого сломались система проверки трофеев и соединение с PlayStation Network.</p>
10
<p>В этой статье мы рассказываем про модуль datetime в Python, который поможет удобно обрабатывать даты и не повторять ошибок Sony.</p>
10
<p>В этой статье мы рассказываем про модуль datetime в Python, который поможет удобно обрабатывать даты и не повторять ошибок Sony.</p>
11
<p><strong>Содержание</strong></p>
11
<p><strong>Содержание</strong></p>
12
<ul><li><a>Что такое datetime в Python</a></li>
12
<ul><li><a>Что такое datetime в Python</a></li>
13
<li><a>Как импортировать модуль datetime</a></li>
13
<li><a>Как импортировать модуль datetime</a></li>
14
<li><a>Основные классы в модуле datetime</a></li>
14
<li><a>Основные классы в модуле datetime</a></li>
15
<li><a>Класс date</a></li>
15
<li><a>Класс date</a></li>
16
<li><a>Класс time</a></li>
16
<li><a>Класс time</a></li>
17
<li><a>Класс datetime</a></li>
17
<li><a>Класс datetime</a></li>
18
<li><a>Арифметические операции со временем</a></li>
18
<li><a>Арифметические операции со временем</a></li>
19
<li><a>Часовые пояса</a></li>
19
<li><a>Часовые пояса</a></li>
20
<li><a>Преобразование строк в даты</a></li>
20
<li><a>Преобразование строк в даты</a></li>
21
<li><a> Преобразование дат в строки</a></li>
21
<li><a> Преобразование дат в строки</a></li>
22
</ul><p><strong>datetime</strong> - это модуль стандартной библиотеки Python, в котором содержатся функции для работы с датой и временем. С их помощью разработчики могут:</p>
22
</ul><p><strong>datetime</strong> - это модуль стандартной библиотеки Python, в котором содержатся функции для работы с датой и временем. С их помощью разработчики могут:</p>
23
<ul><li>получать текущую дату и время;</li>
23
<ul><li>получать текущую дату и время;</li>
24
<li>вычислять, сколько дней прошло с определённого события;</li>
24
<li>вычислять, сколько дней прошло с определённого события;</li>
25
<li>синхронизировать данные с учётом разных часовых поясов;</li>
25
<li>синхронизировать данные с учётом разных часовых поясов;</li>
26
<li>привязывать запуск функций в коде к указанному времени;</li>
26
<li>привязывать запуск функций в коде к указанному времени;</li>
27
<li>выводить пользователю актуальную дату.</li>
27
<li>выводить пользователю актуальную дату.</li>
28
</ul><p>Есть несколько способов подключить модуль datetime к проекту.</p>
28
</ul><p>Есть несколько способов подключить модуль datetime к проекту.</p>
29
<p>Если не хочется разбираться с тонкостями внутреннего устройства datetime, то можно импортировать сразу весь модуль, как единый объект:</p>
29
<p>Если не хочется разбираться с тонкостями внутреннего устройства datetime, то можно импортировать сразу весь модуль, как единый объект:</p>
30
import datetime<p>Тогда к классам и функциям модуля можно будет обращаться с помощью следующей конструкции:</p>
30
import datetime<p>Тогда к классам и функциям модуля можно будет обращаться с помощью следующей конструкции:</p>
31
datetime.<имя><p>Этот способ подтянет в проект всё, что есть в директории модуля. Если в коде проекта будет использовать всего пару функций, то это не лучший способ. Можно сэкономить место и импортировать только то, что нужно.</p>
31
datetime.<имя><p>Этот способ подтянет в проект всё, что есть в директории модуля. Если в коде проекта будет использовать всего пару функций, то это не лучший способ. Можно сэкономить место и импортировать только то, что нужно.</p>
32
<p>Если в проекте нужны только некоторые модули, то для импорта можно использовать ключевое слово from:</p>
32
<p>Если в проекте нужны только некоторые модули, то для импорта можно использовать ключевое слово from:</p>
33
from datetime import datetime, timedelta<p>В этом случае классы и функции можно будет использовать напрямую, без префикса datetime.</p>
33
from datetime import datetime, timedelta<p>В этом случае классы и функции можно будет использовать напрямую, без префикса datetime.</p>
34
<p>Можно перетащить в свой проект абсолютно все публичные функции, классы и переменные модуля. Делается это так:</p>
34
<p>Можно перетащить в свой проект абсолютно все публичные функции, классы и переменные модуля. Делается это так:</p>
35
from datetime import *<p>Импорт всего, что есть в модуле, может вызвать конфликт имён. Поэтому лучше не использовать этот способ в реальных проектах.</p>
35
from datetime import *<p>Импорт всего, что есть в модуле, может вызвать конфликт имён. Поэтому лучше не использовать этот способ в реальных проектах.</p>
36
<p>Все операции со временем и датой осуществляются с помощью трёх основных классов модуля:</p>
36
<p>Все операции со временем и датой осуществляются с помощью трёх основных классов модуля:</p>
37
<ul><li>date - класс для работы с датой. В нём содержится год, месяц и день;</li>
37
<ul><li>date - класс для работы с датой. В нём содержится год, месяц и день;</li>
38
<li>time - класс, который обрабатывает всё, что связано со временем и хранит в себе часы, минуты, секунды и микросекунды;</li>
38
<li>time - класс, который обрабатывает всё, что связано со временем и хранит в себе часы, минуты, секунды и микросекунды;</li>
39
<li>datetime - класс, объединяющий в себе time и date.</li>
39
<li>datetime - класс, объединяющий в себе time и date.</li>
40
</ul><p>Если вы не до конца понимаете, что такое классы и какую роль они играют в Python, то предлагаем отвлечься на <a>наше руководство</a>по основам ООП для питонистов.</p>
40
</ul><p>Если вы не до конца понимаете, что такое классы и какую роль они играют в Python, то предлагаем отвлечься на <a>наше руководство</a>по основам ООП для питонистов.</p>
41
<p>Давайте рассмотрим, как устроены основные классы модуля datetime и как их использовать в коде проекта.</p>
41
<p>Давайте рассмотрим, как устроены основные классы модуля datetime и как их использовать в коде проекта.</p>
42
<p>Как уже говорили выше, класс date отвечает за работу с датами. Его конструктор последовательно принимает на вход год, месяц и число:</p>
42
<p>Как уже говорили выше, класс date отвечает за работу с датами. Его конструктор последовательно принимает на вход год, месяц и число:</p>
43
date(year, month, day)<p>Например, вот так можно задать определённую дату в коде проекта:</p>
43
date(year, month, day)<p>Например, вот так можно задать определённую дату в коде проекта:</p>
44
import datetime somedate = datetime.date(2030, 3, 25) print(somedate) # 2030-03-25<p>Если нужно получить или напечатать не всю дату, а только её часть, то можно использовать свойства year, month и day:</p>
44
import datetime somedate = datetime.date(2030, 3, 25) print(somedate) # 2030-03-25<p>Если нужно получить или напечатать не всю дату, а только её часть, то можно использовать свойства year, month и day:</p>
45
import datetime somedate = datetime.date(2030, 3, 25) print(somedate.year) # 2030 print(somedate.day) # 25<p>Компоненты даты можно менять с помощью функции replace(). Например, в примере кода выше сперва заменим год и день, а после выведем результат:</p>
45
import datetime somedate = datetime.date(2030, 3, 25) print(somedate.year) # 2030 print(somedate.day) # 25<p>Компоненты даты можно менять с помощью функции replace(). Например, в примере кода выше сперва заменим год и день, а после выведем результат:</p>
46
somedate = datetime.date(2030, 3, 25) print(somedate.year) # 2030 print(somedate.day) # 25 somedate = somedate.replace(year=2050, day=15) print(somedate.year) # 2050 print(somedate.day) # 15<p>В классе date есть функция today(), с помощью которой можно получить актуальную дату:</p>
46
somedate = datetime.date(2030, 3, 25) print(somedate.year) # 2030 print(somedate.day) # 25 somedate = somedate.replace(year=2050, day=15) print(somedate.year) # 2050 print(somedate.day) # 15<p>В классе date есть функция today(), с помощью которой можно получить актуальную дату:</p>
47
somedate = date.today() print(somedate) # Актуальная дата в формате yyyy-mm-dd<p>Важно учитывать, что функция получает данные от системных часов. Если на компьютере неправильно настроены дата и время, то Python также получит неверные данные.</p>
47
somedate = date.today() print(somedate) # Актуальная дата в формате yyyy-mm-dd<p>Важно учитывать, что функция получает данные от системных часов. Если на компьютере неправильно настроены дата и время, то Python также получит неверные данные.</p>
48
<p>Класс date не хранит в себе данные о дне недели, но мы можем получить их с помощью функции weekday(). Она возвращает число от 0 до 6, где 0 - понедельник, а 6 - воскресенье.</p>
48
<p>Класс date не хранит в себе данные о дне недели, но мы можем получить их с помощью функции weekday(). Она возвращает число от 0 до 6, где 0 - понедельник, а 6 - воскресенье.</p>
49
<p>Проверим, какой день недели был 1 января 2025 года:</p>
49
<p>Проверим, какой день недели был 1 января 2025 года:</p>
50
somedate = datetime.date(2025, 1, 1) someweekday = somedate.weekday() print(someweekday) # 2<p>Функция вывела число 2, значит, первого января 2025 года была среда, и это - правильно.</p>
50
somedate = datetime.date(2025, 1, 1) someweekday = somedate.weekday() print(someweekday) # 2<p>Функция вывела число 2, значит, первого января 2025 года была среда, и это - правильно.</p>
51
<p>В международном стандарте ISO 8601, который описывает единый формат использования даты и времени, день недели принято задавать числом от 1 до 7, где 1 - понедельник, а 7 - воскресенье. Если надо, чтобы код возвращал данные в таком формате, то используйте функцию isoweekday():</p>
51
<p>В международном стандарте ISO 8601, который описывает единый формат использования даты и времени, день недели принято задавать числом от 1 до 7, где 1 - понедельник, а 7 - воскресенье. Если надо, чтобы код возвращал данные в таком формате, то используйте функцию isoweekday():</p>
52
somedate = datetime.date(2025, 1, 1) someweekday = somedate.isoweekday() print(someweekday) # 3<p>Класс time отвечает за работу со временем. Его конструктор последовательно принимает на вход часы, минуты, секунды и микросекунды:</p>
52
somedate = datetime.date(2025, 1, 1) someweekday = somedate.isoweekday() print(someweekday) # 3<p>Класс time отвечает за работу со временем. Его конструктор последовательно принимает на вход часы, минуты, секунды и микросекунды:</p>
53
time(hour, min, sec, microsec)<p>В конструкторе класса time нет обязательных параметров, а это значит, что если мы что-то пропустим, то система инициализирует это нулями. Давайте попробует задать время с помощью класса time:</p>
53
time(hour, min, sec, microsec)<p>В конструкторе класса time нет обязательных параметров, а это значит, что если мы что-то пропустим, то система инициализирует это нулями. Давайте попробует задать время с помощью класса time:</p>
54
sometime = time(12, 10) print(sometime) # 12:10:00 sometime = time(12, 10, 31) print(sometime) # 12:10:31<p>С помощью функции replace() можно менять компоненты времени. Для примера давайте возьмём время из примера выше и заменим в нём часы и секунды:</p>
54
sometime = time(12, 10) print(sometime) # 12:10:00 sometime = time(12, 10, 31) print(sometime) # 12:10:31<p>С помощью функции replace() можно менять компоненты времени. Для примера давайте возьмём время из примера выше и заменим в нём часы и секунды:</p>
55
sometime = time(12, 10, 31) print(sometime) # 12:10:31 sometime = sometime.replace(hour=8, second=4) print(sometime) # 08:10:04<p>Класс datetime объединяет дату и время в одном объекте и позволяет работать с полными временными метками. Конструктор класса последовательно принимает на вход год, месяц, день, часы, минуты, секунды и микросекунды:</p>
55
sometime = time(12, 10, 31) print(sometime) # 12:10:31 sometime = sometime.replace(hour=8, second=4) print(sometime) # 08:10:04<p>Класс datetime объединяет дату и время в одном объекте и позволяет работать с полными временными метками. Конструктор класса последовательно принимает на вход год, месяц, день, часы, минуты, секунды и микросекунды:</p>
56
datetime(year, month, day, hour, min, sec, microsec)<p>Давайте попробуем задать дату и время с помощью класса datetime:</p>
56
datetime(year, month, day, hour, min, sec, microsec)<p>Давайте попробуем задать дату и время с помощью класса datetime:</p>
57
somedate = datetime(1999, 1, 23, 17, 55) print(somedate) # 1999-01-23 17:55:00<p>С помощью функции replace() также можно менять любой параметр класса. Например, заменим дату и часы:</p>
57
somedate = datetime(1999, 1, 23, 17, 55) print(somedate) # 1999-01-23 17:55:00<p>С помощью функции replace() также можно менять любой параметр класса. Например, заменим дату и часы:</p>
58
somedate = datetime(1999, 1, 23, 17, 55) print(somedate) # 1999-01-23 17:55:00 somedate = somedate.replace(year=3025, hour=8) print(somedate) # 3025-01-23 08:55:00<p>На примерах видно, что удобнее работать с классом datetime: в нём изначально есть все параметры, которые могут понадобиться. Если код в вашем проекте отдельно получает время и дату, то с помощью функции combine() вы можете объединить их в класс datetime:</p>
58
somedate = datetime(1999, 1, 23, 17, 55) print(somedate) # 1999-01-23 17:55:00 somedate = somedate.replace(year=3025, hour=8) print(somedate) # 3025-01-23 08:55:00<p>На примерах видно, что удобнее работать с классом datetime: в нём изначально есть все параметры, которые могут понадобиться. Если код в вашем проекте отдельно получает время и дату, то с помощью функции combine() вы можете объединить их в класс datetime:</p>
59
some_date = date(2025, 12, 25) some_time = time(10, 30) some_datetime = datetime.combine(some_date, some_time) print(some_datetime) # 2025-12-25 10:30:00<p>С помощью функции now() можно получить текущую дату и время на основе системных часов:</p>
59
some_date = date(2025, 12, 25) some_time = time(10, 30) some_datetime = datetime.combine(some_date, some_time) print(some_datetime) # 2025-12-25 10:30:00<p>С помощью функции now() можно получить текущую дату и время на основе системных часов:</p>
60
curent_datetime = datetime.now() print(curent_datetime) # Актуальные дата и время<p>В Unix-системах время исчисляется количеством секунд, которые прошли с полуночи 1 января 1970 года. От этой точки отсчитывают время компьютеры, смартфоны, программы и даже банкоматы.</p>
60
curent_datetime = datetime.now() print(curent_datetime) # Актуальные дата и время<p>В Unix-системах время исчисляется количеством секунд, которые прошли с полуночи 1 января 1970 года. От этой точки отсчитывают время компьютеры, смартфоны, программы и даже банкоматы.</p>
61
<p>С помощью функции timestamp() можно преобразовать объект datetime в метку Unix-времени:</p>
61
<p>С помощью функции timestamp() можно преобразовать объект datetime в метку Unix-времени:</p>
62
curent_datetime = datetime.now() unix_time = curent_datetime.timestamp() print(unix_time) # 1743553145.838873<p>Для осуществления арифметических операций в модуле datetime есть класс timedelta. Он показывает разницу между двумя моментами времени. С помощью timedelta также можно сравнивать даты и смещать временные метки.</p>
62
curent_datetime = datetime.now() unix_time = curent_datetime.timestamp() print(unix_time) # 1743553145.838873<p>Для осуществления арифметических операций в модуле datetime есть класс timedelta. Он показывает разницу между двумя моментами времени. С помощью timedelta также можно сравнивать даты и смещать временные метки.</p>
63
<p>Представьте, что вам надо узнать, сколько дней прошло с 1 марта 2018 года по 3 октября 2023 года. В уме такую задачу сходу не решить, а на Python решение займёт всего четыре строчки кода.</p>
63
<p>Представьте, что вам надо узнать, сколько дней прошло с 1 марта 2018 года по 3 октября 2023 года. В уме такую задачу сходу не решить, а на Python решение займёт всего четыре строчки кода.</p>
64
<p>Сперва создадим обе даты:</p>
64
<p>Сперва создадим обе даты:</p>
65
first_date = date(2018, 3, 1) second_date = date(2023, 10, 2)<p>Теперь остаётся из большего вычесть меньшее и напечатать результат:</p>
65
first_date = date(2018, 3, 1) second_date = date(2023, 10, 2)<p>Теперь остаётся из большего вычесть меньшее и напечатать результат:</p>
66
result = second_date - first_date print(result) # 2041 days, 0:00:00<p>Теперь мы знаем, что с 1 марта 2018 года по 3 октября 2023 года прошёл ровно 2041 день.</p>
66
result = second_date - first_date print(result) # 2041 days, 0:00:00<p>Теперь мы знаем, что с 1 марта 2018 года по 3 октября 2023 года прошёл ровно 2041 день.</p>
67
<p>Представьте, что вы купили билеты на концерт любимой группы, который состоится ровно через 40 дней, а сегодня - 1 июня 2020 года. Давайте узнаем дату, на которую запланировано мероприятие.</p>
67
<p>Представьте, что вы купили билеты на концерт любимой группы, который состоится ровно через 40 дней, а сегодня - 1 июня 2020 года. Давайте узнаем дату, на которую запланировано мероприятие.</p>
68
<p>Для этого сперва создадим объект текущей даты:</p>
68
<p>Для этого сперва создадим объект текущей даты:</p>
69
curent_date = date(2020, 6, 1)<p>Теперь с помощью timedelta обозначим, что концерт состоится через 40 дней:</p>
69
curent_date = date(2020, 6, 1)<p>Теперь с помощью timedelta обозначим, что концерт состоится через 40 дней:</p>
70
curent_delta = timedelta(days=40)<p>Остаётся только прибавить к текущей дате дельту в 40 дней и вывести результат в консоль:</p>
70
curent_delta = timedelta(days=40)<p>Остаётся только прибавить к текущей дате дельту в 40 дней и вывести результат в консоль:</p>
71
future_date = curent_date + curent_delta print(future_date) # 2020-07-11<p>Теперь мы знаем, что концерт запланирован на 11 июля 2020 года.</p>
71
future_date = curent_date + curent_delta print(future_date) # 2020-07-11<p>Теперь мы знаем, что концерт запланирован на 11 июля 2020 года.</p>
72
<p>Представьте, что сейчас на календаре 21 сентября 2014 года и вам надо узнать, какое число было 22 дня назад. Для этого сперва создадим текущую дату и зададим дельту в 22 дня:</p>
72
<p>Представьте, что сейчас на календаре 21 сентября 2014 года и вам надо узнать, какое число было 22 дня назад. Для этого сперва создадим текущую дату и зададим дельту в 22 дня:</p>
73
curent_date = date(2014, 9, 21) curent_delta = timedelta(days=22)<p>Теперь просто вычтем из текущей даты нашу дельту и выведем результат в консоль:</p>
73
curent_date = date(2014, 9, 21) curent_delta = timedelta(days=22)<p>Теперь просто вычтем из текущей даты нашу дельту и выведем результат в консоль:</p>
74
future_date = curent_date - curent_delta print(future_date) # 2014-08-30<p>Выходит, что если сейчас на календаре 21 сентября 2014 года, то 22 дня назад было 30 августа.</p>
74
future_date = curent_date - curent_delta print(future_date) # 2014-08-30<p>Выходит, что если сейчас на календаре 21 сентября 2014 года, то 22 дня назад было 30 августа.</p>
75
<p>Во всех примерах кода выше мы не учитывали часовые пояса и работали с "сырыми" данными. При этом в разных странах используются разные часовые пояса, и это важно учитывать в коде своих проектов. Особенно это важно в приложениях, в которых время - решающий параметр. Например, в банковских системах или в расписании поездов.</p>
75
<p>Во всех примерах кода выше мы не учитывали часовые пояса и работали с "сырыми" данными. При этом в разных странах используются разные часовые пояса, и это важно учитывать в коде своих проектов. Особенно это важно в приложениях, в которых время - решающий параметр. Например, в банковских системах или в расписании поездов.</p>
76
<p>Чтобы обрабатывать часовые пояса в коде, надо понимать, как они устроены. Для регулирования времени во всём мире люди используют стандарт UTC (от англ. Coordinated Universal Time) - всемирное координированное время.</p>
76
<p>Чтобы обрабатывать часовые пояса в коде, надо понимать, как они устроены. Для регулирования времени во всём мире люди используют стандарт UTC (от англ. Coordinated Universal Time) - всемирное координированное время.</p>
77
<p>Есть нулевой часовой пояс - UTC+0, от которого рассчитывают смещения. Например, московское время смещено на +3 часа (UTC+3), а в Вашингтоне - столице США - на -4 часа (UTC-4). Если в нулевом часовом поясе полдень, то в Москве - 15:00.</p>
77
<p>Есть нулевой часовой пояс - UTC+0, от которого рассчитывают смещения. Например, московское время смещено на +3 часа (UTC+3), а в Вашингтоне - столице США - на -4 часа (UTC-4). Если в нулевом часовом поясе полдень, то в Москве - 15:00.</p>
78
<p>В модуле datetime для работы с часовыми поясами есть класс timezone. Создадим с его помощью московский часовой пояс, зная, что у него смещение на три часа вперёд:</p>
78
<p>В модуле datetime для работы с часовыми поясами есть класс timezone. Создадим с его помощью московский часовой пояс, зная, что у него смещение на три часа вперёд:</p>
79
moscow_tz = timezone(timedelta(hours=3), name="MSK")<p>В datetime есть встроенный объект часового пояса, равный UTC+0:</p>
79
moscow_tz = timezone(timedelta(hours=3), name="MSK")<p>В datetime есть встроенный объект часового пояса, равный UTC+0:</p>
80
utc_tz = timezone.utc<p>Смещение от часового пояса UTC+0 можно узнать с помощью функции utcoffset(). Зададим дату со временем и узнаем, на сколько часов смещается время.</p>
80
utc_tz = timezone.utc<p>Смещение от часового пояса UTC+0 можно узнать с помощью функции utcoffset(). Зададим дату со временем и узнаем, на сколько часов смещается время.</p>
81
tz = timezone(timedelta(hours=3)) dt = datetime(2025, 3, 13, 14, 30, tzinfo=tz) offset = tz.utcoffset(dt) print(offset) # 3:00:00<p>Название часового пояса можно узнать с помощью функции tzname(). Сработает она только в том случае, если разработчик во время создания пояса передал параметр name:</p>
81
tz = timezone(timedelta(hours=3)) dt = datetime(2025, 3, 13, 14, 30, tzinfo=tz) offset = tz.utcoffset(dt) print(offset) # 3:00:00<p>Название часового пояса можно узнать с помощью функции tzname(). Сработает она только в том случае, если разработчик во время создания пояса передал параметр name:</p>
82
tz = timezone(timedelta(hours=3), name="MSK") now = datetime.now(tz) print(tz.tzname(now)) # MSK<p>В модуле datetime предусмотрена функция strptime(), с помощью которой можно преобразовать строку в дату. На вход эта функция получает саму строку и описание формата, в котором представлены данные.</p>
82
tz = timezone(timedelta(hours=3), name="MSK") now = datetime.now(tz) print(tz.tzname(now)) # MSK<p>В модуле datetime предусмотрена функция strptime(), с помощью которой можно преобразовать строку в дату. На вход эта функция получает саму строку и описание формата, в котором представлены данные.</p>
83
<p>Формат можно задать с помощью следующих кодов:</p>
83
<p>Формат можно задать с помощью следующих кодов:</p>
84
<strong>Символ</strong><strong>Описание</strong>%dДень%mМесяц%yГод двумя цифрами%YГод четырьмя цифрами%HЧасы в 24-часовом формате%IЧасы в 12-часовом формате%MМинуты%SСекунды%jПорядковый номер дня в году от 001 до 366%ZЧасовой пояс<p>Например вот так можно конвертировать обычную строку в объект datetime:</p>
84
<strong>Символ</strong><strong>Описание</strong>%dДень%mМесяц%yГод двумя цифрами%YГод четырьмя цифрами%HЧасы в 24-часовом формате%IЧасы в 12-часовом формате%MМинуты%SСекунды%jПорядковый номер дня в году от 001 до 366%ZЧасовой пояс<p>Например вот так можно конвертировать обычную строку в объект datetime:</p>
85
some_date = datetime.strptime("02/02/2010 19:44", "%d/%m/%Y %H:%M") print(some_date) # 2010-02-02 19:44:00<p>Если надо, наоборот, из объекта даты получить строки, то можно использовать функцию strftime(). Она принимает на вход дату и формат, в котором надо записать данные. Для записи формата применяют те же коды, что и в функции strptime().</p>
85
some_date = datetime.strptime("02/02/2010 19:44", "%d/%m/%Y %H:%M") print(some_date) # 2010-02-02 19:44:00<p>Если надо, наоборот, из объекта даты получить строки, то можно использовать функцию strftime(). Она принимает на вход дату и формат, в котором надо записать данные. Для записи формата применяют те же коды, что и в функции strptime().</p>
86
<p>Для примера создадим объект datetime и преобразуем его в строки с разным форматированием:</p>
86
<p>Для примера создадим объект datetime и преобразуем его в строки с разным форматированием:</p>
87
somedate = datetime(1999, 1, 23, 17, 55) print(somedate) # 1999-01-23 17:55:00 formatted_somedate = somedate.strftime("%d.%m.%Y %H:%M") print(formatted_somedate) # 23.01.1999 17:55 formatted_somedate = somedate.strftime("%d.%m.%Y") print(formatted_somedate) # 23.01.1999 formatted_somedate = somedate.strftime("%H:%M") print(formatted_somedate) #17:55<ul><li>datetime - модуль стандартной библиотеки Python, предназначенный для работы с датой и временем.</li>
87
somedate = datetime(1999, 1, 23, 17, 55) print(somedate) # 1999-01-23 17:55:00 formatted_somedate = somedate.strftime("%d.%m.%Y %H:%M") print(formatted_somedate) # 23.01.1999 17:55 formatted_somedate = somedate.strftime("%d.%m.%Y") print(formatted_somedate) # 23.01.1999 formatted_somedate = somedate.strftime("%H:%M") print(formatted_somedate) #17:55<ul><li>datetime - модуль стандартной библиотеки Python, предназначенный для работы с датой и временем.</li>
88
<li>С помощью datetime разработчики могут получать актуальное время с учётом часового пояса, находить прошлые и будущие даты.</li>
88
<li>С помощью datetime разработчики могут получать актуальное время с учётом часового пояса, находить прошлые и будущие даты.</li>
89
<li>Для управления часовыми поясами предусмотрен класс timezone.</li>
89
<li>Для управления часовыми поясами предусмотрен класс timezone.</li>
90
<li>datetime используют в программах, в которых важна привязка ко времени. Например, в расписании поездов или в электронном блокноте, который рассылает напоминания в указанное время.</li>
90
<li>datetime используют в программах, в которых важна привязка ко времени. Например, в расписании поездов или в электронном блокноте, который рассылает напоминания в указанное время.</li>
91
<li>Также datetime можно использовать в системных утилитах, например, для привязки логов ко времени.</li>
91
<li>Также datetime можно использовать в системных утилитах, например, для привязки логов ко времени.</li>
92
</ul><p>Python для всех</p>
92
</ul><p>Python для всех</p>
93
<p>Вы освоите Python на практике и создадите проекты для портфолио - телеграм-бот, веб-парсер и сайт с нуля. А ещё получите готовый план выхода на удалёнку и фриланс. Спикер - руководитель отдела разработки в "Сбере".</p>
93
<p>Вы освоите Python на практике и создадите проекты для портфолио - телеграм-бот, веб-парсер и сайт с нуля. А ещё получите готовый план выхода на удалёнку и фриланс. Спикер - руководитель отдела разработки в "Сбере".</p>
94
<p><a>Пройти бесплатно</a></p>
94
<p><a>Пройти бесплатно</a></p>
95
<a><b>Бесплатный курс по разработке на Python ➞</b>Пройдите бесплатный курс по Python и создайте с нуля телеграм-бот, веб-парсер и сайт. Спикер - руководитель отдела разработки в "Сбере". Пройти курс</a>
95
<a><b>Бесплатный курс по разработке на Python ➞</b>Пройдите бесплатный курс по Python и создайте с нуля телеграм-бот, веб-парсер и сайт. Спикер - руководитель отдела разработки в "Сбере". Пройти курс</a>