HTML Diff
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.&lt;имя&gt;<p>Этот способ подтянет в проект всё, что есть в директории модуля. Если в коде проекта будет использовать всего пару функций, то это не лучший способ. Можно сэкономить место и импортировать только то, что нужно.</p>
31 datetime.&lt;имя&gt;<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>