0 added
0 removed
Original
2026-01-01
Modified
2026-03-10
1
<ul><li><a>Получаем текущую дату и время</a></li>
1
<ul><li><a>Получаем текущую дату и время</a></li>
2
<li><a>Работа с датой current</a></li>
2
<li><a>Работа с датой current</a></li>
3
<li><a>Работаем с текущим временем</a></li>
3
<li><a>Работаем с текущим временем</a></li>
4
<li><a>Другой часовой пояс: временные зоны (timezones)</a></li>
4
<li><a>Другой часовой пояс: временные зоны (timezones)</a></li>
5
<li><a>Преобразование временных меток</a></li>
5
<li><a>Преобразование временных меток</a></li>
6
</ul><p>Время и дата играют важнейшую роль при решении определенных задач в программировании. Разработчику на Python приходится нередко использовать точные значения текущей (current) даты, к примеру, при сохранении информации в базе данных, вычислениях, регистрации, обеспечении доступа и т. д. В этой статье пойдет разговор о том, как узнать текущие временные значения с помощью модуля<em>datetime</em>. Вдобавок к этому, читатель узнает о временных настройках для разных часовых поясов и преобразовании объектов <em>datetime </em>в метки времени<strong>Unix</strong>.</p>
6
</ul><p>Время и дата играют важнейшую роль при решении определенных задач в программировании. Разработчику на Python приходится нередко использовать точные значения текущей (current) даты, к примеру, при сохранении информации в базе данных, вычислениях, регистрации, обеспечении доступа и т. д. В этой статье пойдет разговор о том, как узнать текущие временные значения с помощью модуля<em>datetime</em>. Вдобавок к этому, читатель узнает о временных настройках для разных часовых поясов и преобразовании объектов <em>datetime </em>в метки времени<strong>Unix</strong>.</p>
7
<h2><strong>Получаем текущую дату и время</strong></h2>
7
<h2><strong>Получаем текущую дату и время</strong></h2>
8
<p>Datetime включает в себя разные классы, позволяющие получать нужные временные данные:</p>
8
<p>Datetime включает в себя разные классы, позволяющие получать нужные временные данные:</p>
9
<ol><li><em>datetime.date</em>: день, месяц и год;</li>
9
<ol><li><em>datetime.date</em>: день, месяц и год;</li>
10
<li><em>datetime.time</em>: время в часах, минутах, секундах, а также микросекундах. Тут дата значения не имеет;</li>
10
<li><em>datetime.time</em>: время в часах, минутах, секундах, а также микросекундах. Тут дата значения не имеет;</li>
11
<li><em>datetime.datetime</em>: здесь хранятся атрибуты <em>date</em> и <em>time</em>.</li>
11
<li><em>datetime.datetime</em>: здесь хранятся атрибуты <em>date</em> и <em>time</em>.</li>
12
</ol><p>Для примера можно вывести в терминал текущую (current) дату и время. Можно воспользоваться объектом <em>datetime.datetime</em>- из него довольно просто извлекаются объекты<em>date </em>и <em>time</em>. Сначала следует импортировать требуемый модуль:</p>
12
</ol><p>Для примера можно вывести в терминал текущую (current) дату и время. Можно воспользоваться объектом <em>datetime.datetime</em>- из него довольно просто извлекаются объекты<em>date </em>и <em>time</em>. Сначала следует импортировать требуемый модуль:</p>
13
<p>from datetime import datetime</p>
13
<p>from datetime import datetime</p>
14
<p>Да, это выглядит странновато, т. к. речь идет о получении класса<em>datetime</em>из модуля<em>datetime</em>, однако это 2 разные вещи. Далее следует воспользоваться функцией now() - она позволит получить объект с текущим временем и датой.</p>
14
<p>Да, это выглядит странновато, т. к. речь идет о получении класса<em>datetime</em>из модуля<em>datetime</em>, однако это 2 разные вещи. Далее следует воспользоваться функцией now() - она позволит получить объект с текущим временем и датой.</p>
15
<p>from datetime import datetime</p>
15
<p>from datetime import datetime</p>
16
<p>current_datetime = datetime.now()</p>
16
<p>current_datetime = datetime.now()</p>
17
<p>print(current_datetime)</p>
17
<p>print(current_datetime)</p>
18
<p>Набрав код выше, вы увидите на экране следующее (в вашем случае вывод изменится, ведь минуты не стоят на месте):</p>
18
<p>Набрав код выше, вы увидите на экране следующее (в вашем случае вывод изменится, ведь минуты не стоят на месте):</p>
19
<p>Что произошло? Функция now() отобразила объект, причем с датой и временем создания этого самого объекта. В результате была выведена соответствующая строка. Однако никто не мешает получить временные атрибуты отдельно: </p>
19
<p>Что произошло? Функция now() отобразила объект, причем с датой и временем создания этого самого объекта. В результате была выведена соответствующая строка. Однако никто не мешает получить временные атрибуты отдельно: </p>
20
<p>Таким образом, метод now() вполне годится для получения текущей даты и времени. Но что делать, если надо получить лишь дату?</p>
20
<p>Таким образом, метод now() вполне годится для получения текущей даты и времени. Но что делать, если надо получить лишь дату?</p>
21
<h2><strong>Работа с датой</strong><strong>current</strong></h2>
21
<h2><strong>Работа с датой</strong><strong>current</strong></h2>
22
<p>Существуют 2 способа получения текущей даты. Первый выводит нужные данные из объекта <em>datetime </em>посредством метода date():</p>
22
<p>Существуют 2 способа получения текущей даты. Первый выводит нужные данные из объекта <em>datetime </em>посредством метода date():</p>
23
<p>Во втором применяется метод today() класса <em>date</em>:</p>
23
<p>Во втором применяется метод today() класса <em>date</em>:</p>
24
<p>Класс <em>datetime.date</em> позволяет получать календарную дату. Также следует добавить, что его атрибуты (<em>year, month, day</em>) бывают доступны и отдельно, как в примере с<em>datetime</em>.</p>
24
<p>Класс <em>datetime.date</em> позволяет получать календарную дату. Также следует добавить, что его атрибуты (<em>year, month, day</em>) бывают доступны и отдельно, как в примере с<em>datetime</em>.</p>
25
<p>Тут все понятно и просто. Но есть нюанс: если надо получить день недели, прописывают current_date.weekday()+1. Дело в том, что нумерация дней недели начинается с нуля, то есть понедельник - это 0, вторник - 1, среда - 2 и так далее. Если такое положение вещей устраивает, +1 можно и не добавлять.</p>
25
<p>Тут все понятно и просто. Но есть нюанс: если надо получить день недели, прописывают current_date.weekday()+1. Дело в том, что нумерация дней недели начинается с нуля, то есть понедельник - это 0, вторник - 1, среда - 2 и так далее. Если такое положение вещей устраивает, +1 можно и не добавлять.</p>
26
<p>А как поступить, если надо отобразить текущее время отдельно от даты?</p>
26
<p>А как поступить, если надо отобразить текущее время отдельно от даты?</p>
27
<h2><strong>Работаем с текущим временем</strong></h2>
27
<h2><strong>Работаем с текущим временем</strong></h2>
28
<p>Текущее время от объекта <em>datetime</em>получают посредством метода time(). Вот как это выглядит:</p>
28
<p>Текущее время от объекта <em>datetime</em>получают посредством метода time(). Вот как это выглядит:</p>
29
<p>Здесь отдельно получить часы, минуты, секунды и микросекунды не представляется возможным, да в этом и нет необходимости, т. к. само понятие времени суток не предполагает другого отображения.</p>
29
<p>Здесь отдельно получить часы, минуты, секунды и микросекунды не представляется возможным, да в этом и нет необходимости, т. к. само понятие времени суток не предполагает другого отображения.</p>
30
<p>Важно отметить, что есть возможность получить временные данные и с учетом нужного часового пояса (<strong>timezone</strong>). Как и что используется, поговорим ниже.</p>
30
<p>Важно отметить, что есть возможность получить временные данные и с учетом нужного часового пояса (<strong>timezone</strong>). Как и что используется, поговорим ниже.</p>
31
<h2><strong>Другой часовой пояс: временные зоны (</strong><strong>timezones</strong><strong>)</strong></h2>
31
<h2><strong>Другой часовой пояс: временные зоны (</strong><strong>timezones</strong><strong>)</strong></h2>
32
<p>Метод now() принимает в Python временную зону в качестве аргумента, так что объект <em>datetime </em>генерируется соответствующим образом. </p>
32
<p>Метод now() принимает в Python временную зону в качестве аргумента, так что объект <em>datetime </em>генерируется соответствующим образом. </p>
33
<p>Для получения информации с учетом часового пояса необходимо задействовать библиотеку<strong><em><a>pytz</a></em></strong>(если ее нет, потребуется инсталляция, для чего подойдет команда pip3 install pytz).</p>
33
<p>Для получения информации с учетом часового пояса необходимо задействовать библиотеку<strong><em><a>pytz</a></em></strong>(если ее нет, потребуется инсталляция, для чего подойдет команда pip3 install pytz).</p>
34
<p>Так как я нахожусь в Минске, давайте получим текущие временные значения (times) именно для Минска:</p>
34
<p>Так как я нахожусь в Минске, давайте получим текущие временные значения (times) именно для Минска:</p>
35
<p>Строка в коде minsk_current_datetime является объектом<em>datetime</em>, то есть все то же самое, что и ранее, но уже в полном соответствии с часовым поясом Республики Беларусь.</p>
35
<p>Строка в коде minsk_current_datetime является объектом<em>datetime</em>, то есть все то же самое, что и ранее, но уже в полном соответствии с часовым поясом Республики Беларусь.</p>
36
<p>Когда надо узнать время в UTC, тоже пригодится модуль <strong>pytz</strong>:</p>
36
<p>Когда надо узнать время в UTC, тоже пригодится модуль <strong>pytz</strong>:</p>
37
<p>Получить время UTC можно и без модуля<strong>pytz</strong>, т. к.<em>datetime </em>имеет полезное свойство <em>timezone</em>. Что же, давайте задействуем свойство<em>timezone</em>:</p>
37
<p>Получить время UTC можно и без модуля<strong>pytz</strong>, т. к.<em>datetime </em>имеет полезное свойство <em>timezone</em>. Что же, давайте задействуем свойство<em>timezone</em>:</p>
38
<p>Таким образом, можно без проблем преобразовать текущие даты и значения времени в различные часовые пояса.</p>
38
<p>Таким образом, можно без проблем преобразовать текущие даты и значения времени в различные часовые пояса.</p>
39
<h2>Преобразование временных меток</h2>
39
<h2>Преобразование временных меток</h2>
40
<p>Также может быть очень полезным преобразовывать время в один из самых широко применяемых форматов в вычислениях. Речь идет о временных метках<strong>Unix</strong>.</p>
40
<p>Также может быть очень полезным преобразовывать время в один из самых широко применяемых форматов в вычислениях. Речь идет о временных метках<strong>Unix</strong>.</p>
41
<p>Доподлинно известно, что компьютерные системы измеряют время не так, как люди. Здесь за основу берется число секунд, которые прошли с начала Unix-эпохи, то есть с 00:00:00 UTC 1.01.1979. Базы данных, протоколы и приложения обычно задействуют временную метку.</p>
41
<p>Доподлинно известно, что компьютерные системы измеряют время не так, как люди. Здесь за основу берется число секунд, которые прошли с начала Unix-эпохи, то есть с 00:00:00 UTC 1.01.1979. Базы данных, протоколы и приложения обычно задействуют временную метку.</p>
42
<p>Для ее получения в "Питоне" пригодится модуль<em>time</em>, следовательно, первая строка будет import time:</p>
42
<p>Для ее получения в "Питоне" пригодится модуль<em>time</em>, следовательно, первая строка будет import time:</p>
43
<p>Функция time.time() возвращает пользователю число с плавающей запятой и с временной меткой Unix. </p>
43
<p>Функция time.time() возвращает пользователю число с плавающей запятой и с временной меткой Unix. </p>
44
<p>На этом все. Очень надеемся, что вы получили некоторое представление об использовании встроенных Python-библиотек и модулей, необходимых для отображения временных значений.</p>
44
<p>На этом все. Очень надеемся, что вы получили некоторое представление об использовании встроенных Python-библиотек и модулей, необходимых для отображения временных значений.</p>
45
<a></a><p><a>Источник</a></p>
45
<a></a><p><a>Источник</a></p>
46
46