Какая библиотека отвечает за время python
Перейти к содержимому

Какая библиотека отвечает за время python

  • автор:

Дата и время в Python

В Python для описания даты и времени используется 3 разных объекта:

  • date для хранения даты “25 декабря 2018г.”
  • time для времени без даты
  • datetime для времени с датой “25 декабря 2018г., 21:01:54”

Все объекты живут в модуле datetime :

import datetime print(datetime.datetime.now()) print(datetime.date.today()) 

В модуле datetime есть отдельный объект timezone для хранения часового пояса: UTC, UTC+3h, UTC-8 и другие. Объекты time и datetime могут хранить время с учетом часового пояса или без.

Работать с часовыми поясами сложно: приходится учитывать летнее и зимнее время, следить за изменениями в законодательстве разных стран. В Python для этих целей есть популярная библиотека pytz. Она поставляется со своей базой данных и регулярно обновляется.

Чтобы избежать работы с часовыми поясами используют Unix Timestamp. Это число с количеством секунд, прошедших с полуночи 1 января 1970 года по UTC. Timestamp не зависит от часового пояса и выражается одним числом 1546704810.414488 . Такой формат удобен при передаче и хранении данных, но непонятен человеку.

Все форматы даты и времени можно конвертировать один в другой. Это не тривиально, но спасает StackOverflow.

Примеры работы с датой и временем

Попробуйте бесплатные уроки по Python

Получите крутое код-ревью от практикующих программистов с разбором ошибок и рекомендациями, на что обратить внимание — бесплатно.

Переходите на страницу учебных модулей «Девмана» и выбирайте тему.

Модуль time

Python 3 логотип

time.altzone — смещение DST часового пояса в секундах к западу от нулевого меридиана. Если часовой пояс находится восточнее, смещение отрицательно.

time.asctime([t]) — преобразовывает кортеж или struct_time в строку вида «Thu Sep 27 16:42:37 2012». Если аргумент не указан, используется текущее время.

time.clock() — в Unix, возвращает текущее время. В Windows, возвращает время, прошедшее с момента первого вызова данной функции.

time.ctime([сек]) — преобразует время, выраженное в секундах с начала эпохи в строку вида «Thu Sep 27 16:42:37 2012».

time.daylight — не 0, если определено, зимнее время или летнее (DST).

time.gmtime([сек]) — преобразует время, выраженное в секундах с начала эпохи в struct_time, где DST флаг всегда равен нулю.

time.localtime([сек]) — как gmtime, но с DST флагом.

time.mktime(t) — преобразует кортеж или struct_time в число секунд с начала эпохи. Обратна функции time.localtime.

time.sleep(сек) — приостановить выполнение программы на заданное количество секунд.

time.strftime(формат, [t]) — преобразует кортеж или struct_time в строку по формату:

Формат Значение
%a Сокращенное название дня недели
%A Полное название дня недели
%b Сокращенное название месяца
%B Полное название месяца
%c Дата и время
%d День месяца [01,31]
%H Час (24-часовой формат) [00,23]
%I Час (12-часовой формат) [01,12]
%j День года [001,366]
%m Номер месяца [01,12]
%M Число минут [00,59]
%p До полудня или после (при 12-часовом формате)
%S Число секунд [00,61]
%U Номер недели в году (нулевая неделя начинается с воскресенья) [00,53]
%w Номер дня недели [0(Sunday),6]
%W Номер недели в году (нулевая неделя начинается с понедельника) [00,53]
%x Дата
%X Время
%y Год без века [00,99]
%Y Год с веком
%Z Временная зона
%% Знак ‘%’

time.strptime(строка [, формат]) — разбор строки, представляющей время в соответствии с форматом. Возвращаемое значение struct_time. Формат по умолчанию: «%a %b %d %H:%M:%S %Y».

Класс time.struct_time — тип последовательности значения времени. Имеет интерфейс кортежа. Можно обращаться по индексу или по имени.

  1. tm_year
  2. tm_mon
  3. tm_mday
  4. tm_hour
  5. tm_min
  6. tm_sec
  7. tm_wday
  8. tm_yday
  9. tm_isdst

time.time() — время, выраженное в секундах с начала эпохи.

time.timezone — смещение местного часового пояса в секундах к западу от нулевого меридиана. Если часовой пояс находится восточнее, смещение отрицательно.

time.tzname — кортеж из двух строк: первая — имя DST часового пояса, второй — имя местного часового пояса.

Для вставки кода на Python в комментарий заключайте его в теги

Работа с датами и временем

Основной функционал для работы с датами и временем сосредоточен в модуле datetime в виде следующих классов:

Класс date

Для работы с датами воспользуемся классом date , который определен в модуле datetime. Для создания объекта date мы можем использовать конструктор date, который последовательно принимает три параметра: год, месяц и день.

date(year, month, day)

Например, создадим какую-либо дату:

import datetime yesterday = datetime.date(2017,5, 2) print(yesterday) # 2017-05-02

Если необходимо получить текущую дату, то можно воспользоваться методом today() :

from datetime import date today = date.today() print(today) # 2017-05-03 print("<>.<>.<>".format(today.day, today.month, today.year)) # 2.5.2017

С помощью свойств day, month, year можно получить соответственно день, месяц и год

Класс time

За работу с временем отвечает класс time . Используя его конструктор, можно создать объект времени:

time([hour] [, min] [, sec] [, microsec])

Конструктор последовательно принимает часы, минуты, секунды и микросекунды. Все параметры необязательные, и если мы какой-то параметр не передадим, то соответствующее значение будет инициализироваться нулем.

from datetime import time current_time = time() print(current_time) # 00:00:00 current_time = time(16, 25) print(current_time) # 16:25:00 current_time = time(16, 25, 45) print(current_time) # 16:25:45

Класс datetime

Класс datetime из одноименного модуля объединяет возможности работы с датой и временем. Для создания объекта datetime можно использовать следующий конструктор:

datetime(year, month, day [, hour] [, min] [, sec] [, microsec])

Первые три параметра, представляющие год, месяц и день, являются обязательными. Остальные необязательные, и если мы не укажем для них значения, то по умолчанию они инициализируются нулем.

from datetime import datetime deadline = datetime(2017, 5, 10) print(deadline) # 2017-05-10 00:00:00 deadline = datetime(2017, 5, 10, 4, 30) print(deadline) # 2017-05-10 04:30:00

Для получения текущих даты и времени можно вызвать метод now() :

from datetime import datetime now = datetime.now() print(now) # 2017-05-03 11:18:56.239443 print("<>.<>.<> <>:<>".format(now.day, now.month, now.year, now.hour, now.minute)) # 3.5.2017 11:21 print(now.date()) print(now.time())

С помощью свойств day, month, year, hour, minute, second можно получить отдельные значения даты и времени. А через методы date() и time() можно получить отдельно дату и время соответственно.

Преобразование из строки в дату

Из функциональности класса datetime следует отметить метод strptime() , который позволяет распарсить строку и преобразовать ее в дату. Этот метод принимает два параметра:

strptime(str, format)

Первый параметр str представляет строковое определение даты и времени, а второй параметр - формат, который определяет, как различные части даты и времени расположены в этой строке.

Для определения формата мы можем использовать следующие коды:

  • %d : день месяца в виде числа
  • %m : порядковый номер месяца
  • %y : год в виде 2-х чисел
  • %Y : год в виде 4-х чисел
  • %H : час в 24-х часовом формате
  • %M : минута
  • %S : секунда

Применим различные форматы:

from datetime import datetime deadline = datetime.strptime("22/05/2017", "%d/%m/%Y") print(deadline) # 2017-05-22 00:00:00 deadline = datetime.strptime("22/05/2017 12:30", "%d/%m/%Y %H:%M") print(deadline) # 2017-05-22 12:30:00 deadline = datetime.strptime("05-22-2017 12:30", "%m-%d-%Y %H:%M") print(deadline) # 2017-05-22 12:30:00

Функция time() модуля time в Python

Функция time() модуля time вернет время в секундах с начала эпохи как число с плавающей запятой.

Конкретная дата эпохи и обработка високосных секунд зависит от платформы. В Windows и большинстве систем Unix периодом времени является 1 января 1970 года, 00:00:00 (UTC), и високосные секунды не учитываются во времени с начала эпохи. Это обычно называют временем Unix.

Чтобы узнать, какова эпоха на данной платформе, посмотрите на time.gmtime(0) .

Обратите внимание, что, хотя время всегда возвращается как число float , не все системы предоставляют время с большей точностью, чем 1 секунда. Хотя эта функция обычно возвращает неубывающие значения, она может возвращать меньшее значение, чем предыдущий вызов, если системные часы были переведены назад между двумя вызовами.

Число, возвращаемое функцией time.time() , можно преобразовать в более распространенный формат времени (год, месяц, день, час и т. д.) в UTC, передав его в функцию time.gmtime() или по местному времени, передав его функции time.localtime() . В обоих случаях возвращается объект time.struct_time , из которого компоненты календарной даты могут быть доступны как атрибуты.

Функция time.time_ns() работает аналогично time.time() , но возвращает время как целое число наносекунд с начала эпохи.Работает не на всех платформах.

Примеры использования:
>>> import time >>> sec = time.time() >>> sec # 1587806227.4762378 >>> struct = time.localtime(sec) >>> time.strftime('%d.%m.%Y %H:%M', struct) # '25.04.2020 12:31' 
  • КРАТКИЙ ОБЗОР МАТЕРИАЛА.
  • Функция asctime() модуля time
  • Функция ctime() модуля time
  • Функция get_clock_info() модуля time
  • Функция gmtime() модуля time
  • Функция localtime() модуля time
  • Функция mktime() модуля time
  • Функция monotonic() модуля time
  • Функция perf_counter() модуля time
  • Функция process_time() модуля time
  • Функция sleep() модуля time
  • Функция strftime() модуля time
  • Функция strptime() модуля time
  • Класс struct_time модуля time
  • Функция time() модуля time
  • Функция tzset() модуля time
  • Константы часового пояса модуля time

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *