Учебники

Python 3 — дата и время

Программа Python может обрабатывать дату и время несколькими способами. Преобразование между форматами даты — обычная задача для компьютеров. Модули времени и календаря Python помогают отслеживать дату и время.

Что такое тик?

Временные интервалы — это числа с плавающей точкой в ​​секундах. Особые моменты времени выражаются в секундах с 12:00 утра, 1 января 1970 года (эпоха).

В Python есть популярный модуль времени, который предоставляет функции для работы со временем и для преобразования между представлениями. Функция time.time () возвращает текущее системное время в тиках с 12:00, 1 января 1970 года (эпоха).

пример

Live Demo

#!/usr/bin/python3
import time;      # This is required to include time module.

ticks = time.time()
print ("Number of ticks since 12:00am, January 1, 1970:", ticks)

Это приведет к следующему результату:

Number of ticks since 12:00am, January 1, 1970: 1455508609.34375

Арифметика даты легко сделать с помощью галочек. Однако даты до эпохи не могут быть представлены в этой форме. Даты в далеком будущем также не могут быть представлены таким образом — точка отсечения наступает где-то в 2038 году для UNIX и Windows.

Что такое TimeTuple?

Многие из функций времени Python обрабатывают время как кортеж из 9 чисел, как показано ниже —

Индекс поле Ценности
0 4-значный год 2016
1 Месяц От 1 до 12
2 День От 1 до 31
3 Час От 0 до 23
4 минут От 0 до 59
5 второй От 0 до 61 (60 или 61 — високосные секунды)
6 День недели От 0 до 6 (0 — понедельник)
7 День года С 1 по 366 (юлианский день)
8 Дневного сбережения -1, 0, 1, -1 означает, что библиотека определяет DST

Например —

Live Demo

import time

print (time.localtime());

Это приведет к следующему результату:

time.struct_time(tm_year = 2016, tm_mon = 2, tm_mday = 15, tm_hour = 9, 
   tm_min = 29, tm_sec = 2, tm_wday = 0, tm_yday = 46, tm_isdst = 0)

Вышеуказанный кортеж эквивалентен структуре struct_time . Эта структура имеет следующие атрибуты —

Индекс Атрибуты Ценности
0 tm_year 2016
1 tm_mon От 1 до 12
2 tm_mday От 1 до 31
3 tm_hour От 0 до 23
4 tm_min От 0 до 59
5 tm_sec От 0 до 61 (60 или 61 — високосные секунды)
6 tm_wday От 0 до 6 (0 — понедельник)
7 tm_yday С 1 по 366 (юлианский день)
8 tm_isdst -1, 0, 1, -1 означает, что библиотека определяет DST

Получение текущего времени

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

Live Demo

#!/usr/bin/python3
import time

localtime = time.localtime(time.time())
print ("Local current time :", localtime)

Это приведет к следующему результату, который может быть отформатирован в любой другой презентабельной форме —

Local current time : time.struct_time(tm_year = 2016, tm_mon = 2, tm_mday = 15, 
   tm_hour = 9, tm_min = 29, tm_sec = 2, tm_wday = 0, tm_yday = 46, tm_isdst = 0)

Получение отформатированного времени

Вы можете отформатировать любое время в соответствии с вашими требованиями, но простой способ получить время в удобочитаемом формате — это asctime ()

Live Demo

#!/usr/bin/python3
import time

localtime = time.asctime( time.localtime(time.time()) )
print ("Local current time :", localtime)

Это даст следующий результат —

Local current time : Mon Feb 15 09:34:03 2016

Получение календаря на месяц

Модуль календаря предоставляет широкий спектр методов для игры с годовыми и ежемесячными календарями. Здесь мы печатаем календарь на данный месяц (январь 2008) —

Live Demo

#!/usr/bin/python3
import calendar

cal = calendar.month(2016, 2)
print ("Here is the calendar:")
print (cal)

Это даст следующий результат —

Here is the calendar:
   February 2016
Mo Tu We Th Fr Sa Su
 1  2  3  4  5  6  7
 8  9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29

Модуль времени

В Python есть популярный модуль времени , который предоставляет функции для работы со временем и для преобразования между представлениями. Вот список всех доступных методов.

Sr.No. Описание функции
1 time.altzone

Смещение местного часового пояса DST в секундах к западу от UTC, если оно определено. Это отрицательно, если местный часовой пояс DST расположен к востоку от UTC (как в Западной Европе, включая Великобританию). Используйте это, если дневной свет ненулевой.

2 time.asctime ([tupletime])

Принимает кортеж времени и возвращает читаемую 24-символьную строку, например, «Tue Dec 11 18:07:14 2008».

3 time.clock ()

Возвращает текущее время процессора в виде числа с плавающей запятой в секундах. Для измерения вычислительных затрат различных подходов значение time.clock более полезно, чем time.time ().

4 time.ctime ([сек])

Как asctime (localtime (secs)) и без аргументов, как asctime ()

5 time.gmtime ([сек])

Принимает момент, выраженный в секундах с начала эпохи, и возвращает кортеж времени t с временем UTC. Примечание — t.tm_isdst всегда равно 0

6 time.localtime ([сек])

Принимает момент, выраженный в секундах с начала эпохи, и возвращает кортеж времени t с местным временем (t.tm_isdst равно 0 или 1, в зависимости от того, применяется ли DST к мгновенным секундам по локальным правилам).

7 time.mktime (tupletime)

Принимает момент, выраженный как кортеж времени по местному времени, и возвращает значение с плавающей запятой с моментом, выраженным в секундах с начала эпохи.

8 time.sleep (сек)

Приостанавливает вызывающий поток на секунды.

9 time.strftime (FMT [, tupletime])

Принимает момент, выраженный как кортеж времени по местному времени, и возвращает строку, представляющую момент, как указано в строке fmt.

10 time.strptime (str, fmt = ‘% a% b% d% H:% M:% S% Y’)

Анализирует str в соответствии со строкой формата fmt и возвращает момент в формате кортежа времени.

11 time.time ()

Возвращает текущий момент времени, число с плавающей запятой в секундах с начала эпохи.

12 time.tzset ()

Сбрасывает правила преобразования времени, используемые библиотечными процедурами. Переменная окружения TZ определяет, как это делается.

Смещение местного часового пояса DST в секундах к западу от UTC, если оно определено. Это отрицательно, если местный часовой пояс DST расположен к востоку от UTC (как в Западной Европе, включая Великобританию). Используйте это, если дневной свет ненулевой.

Принимает кортеж времени и возвращает читаемую 24-символьную строку, например, «Tue Dec 11 18:07:14 2008».

Возвращает текущее время процессора в виде числа с плавающей запятой в секундах. Для измерения вычислительных затрат различных подходов значение time.clock более полезно, чем time.time ().

Как asctime (localtime (secs)) и без аргументов, как asctime ()

Принимает момент, выраженный в секундах с начала эпохи, и возвращает кортеж времени t с временем UTC. Примечание — t.tm_isdst всегда равно 0

Принимает момент, выраженный в секундах с начала эпохи, и возвращает кортеж времени t с местным временем (t.tm_isdst равно 0 или 1, в зависимости от того, применяется ли DST к мгновенным секундам по локальным правилам).

Принимает момент, выраженный как кортеж времени по местному времени, и возвращает значение с плавающей запятой с моментом, выраженным в секундах с начала эпохи.

Приостанавливает вызывающий поток на секунды.

Принимает момент, выраженный как кортеж времени по местному времени, и возвращает строку, представляющую момент, как указано в строке fmt.

Анализирует str в соответствии со строкой формата fmt и возвращает момент в формате кортежа времени.

Возвращает текущий момент времени, число с плавающей запятой в секундах с начала эпохи.

Сбрасывает правила преобразования времени, используемые библиотечными процедурами. Переменная окружения TZ определяет, как это делается.

Есть два важных атрибута, доступных с модулем времени. Они —

Sr.No. Атрибут и описание
1

time.timezone

Атрибут time.timezone — это смещение в секундах местного часового пояса (без перехода на летнее время) от UTC (> 0 в Северной и Южной Америке; <= 0 в большинстве стран Европы, Азии, Африки).

2

time.tzname

Атрибут time.tzname представляет собой пару строк, зависящих от локали, которые являются именами местного часового пояса без и с DST соответственно.

time.timezone

Атрибут time.timezone — это смещение в секундах местного часового пояса (без перехода на летнее время) от UTC (> 0 в Северной и Южной Америке; <= 0 в большинстве стран Европы, Азии, Африки).

time.tzname

Атрибут time.tzname представляет собой пару строк, зависящих от локали, которые являются именами местного часового пояса без и с DST соответственно.

Модуль календаря

Модуль календаря предоставляет функции, связанные с календарем, в том числе функции для печати текстового календаря на определенный месяц или год.

По умолчанию в календаре первый день недели — понедельник, а последний — воскресенье. Чтобы изменить это, вызовите функцию calendar.setfirstweekday () .

Вот список функций, доступных с модулем календаря

Sr.No. Описание функции
1

calendar.calendar (год, w = 2, l = 1, c = 6)

Возвращает многострочную строку с календарем для года, отформатированного в три столбца, разделенных пробелами c. w — ширина в символах каждой даты; каждая строка имеет длину 21 * w + 18 + 2 * c. l — количество строк за каждую неделю.

2

calendar.firstweekday ()

Возвращает текущую настройку для дня недели, который начинается каждую неделю. По умолчанию при первом импортировании календаря это 0, что означает понедельник.

3

calendar.isleap (год)

Возвращает True, если год является високосным; в противном случае Ложь.

4

calendar.leapdays (y1, y2)

Возвращает общее количество високосных дней в годах в пределах диапазона (y1, y2).

5

calendar.month (год, месяц, w = 2, l = 1)

Возвращает многострочную строку с календарем на месяц месяц год, одну строку в неделю плюс две строки заголовка. w — ширина в символах каждой даты; каждая строка имеет длину 7 * w + 6. l — количество строк за каждую неделю.

6

calendar.monthcalendar (год, месяц)

Возвращает список списков целых. Каждый подсписок обозначает неделю. Дни вне месяца, месяца, года и года установлены на 0; дни в месяце устанавливаются на их день месяца, 1 и выше.

7

calendar.monthrange (год, месяц)

Возвращает два целых числа. Первый — это код дня недели для первого дня месяца месяца в году; второй — количество дней в месяце. Коды дня недели: от 0 (понедельник) до 6 (воскресенье); номера месяцев от 1 до 12.

8

calendar.prcal (год, w = 2, l = 1, c = 6)

Как печатать calendar.calendar (год, ш, л, в).

9

calendar.prmonth (год, месяц, w = 2, l = 1)

Как печать calendar.month (год, месяц, ш, л).

10

calendar.setfirstweekday (день недели)

Устанавливает первый день каждой недели в код дня недели. Коды дня недели: от 0 (понедельник) до 6 (воскресенье).

11

calendar.timegm (tupletime)

Инверсия time.gmtime: принимает момент времени в форме кортежа и возвращает тот же момент, что и число с плавающей запятой в секундах с начала эпохи.

12

calendar.weekday (год, месяц, день)

Возвращает код дня недели для указанной даты. Коды дня недели: от 0 (понедельник) до 6 (воскресенье); номера месяцев от 1 (январь) до 12 (декабрь).

calendar.calendar (год, w = 2, l = 1, c = 6)

Возвращает многострочную строку с календарем для года, отформатированного в три столбца, разделенных пробелами c. w — ширина в символах каждой даты; каждая строка имеет длину 21 * w + 18 + 2 * c. l — количество строк за каждую неделю.

calendar.firstweekday ()

Возвращает текущую настройку для дня недели, который начинается каждую неделю. По умолчанию при первом импортировании календаря это 0, что означает понедельник.

calendar.isleap (год)

Возвращает True, если год является високосным; в противном случае Ложь.

calendar.leapdays (y1, y2)

Возвращает общее количество високосных дней в годах в пределах диапазона (y1, y2).

calendar.month (год, месяц, w = 2, l = 1)

Возвращает многострочную строку с календарем на месяц месяц год, одну строку в неделю плюс две строки заголовка. w — ширина в символах каждой даты; каждая строка имеет длину 7 * w + 6. l — количество строк за каждую неделю.

calendar.monthcalendar (год, месяц)

Возвращает список списков целых. Каждый подсписок обозначает неделю. Дни вне месяца, месяца, года и года установлены на 0; дни в месяце устанавливаются на их день месяца, 1 и выше.

calendar.monthrange (год, месяц)

Возвращает два целых числа. Первый — это код дня недели для первого дня месяца месяца в году; второй — количество дней в месяце. Коды дня недели: от 0 (понедельник) до 6 (воскресенье); номера месяцев от 1 до 12.

calendar.prcal (год, w = 2, l = 1, c = 6)

Как печатать calendar.calendar (год, ш, л, в).

calendar.prmonth (год, месяц, w = 2, l = 1)

Как печать calendar.month (год, месяц, ш, л).

calendar.setfirstweekday (день недели)

Устанавливает первый день каждой недели в код дня недели. Коды дня недели: от 0 (понедельник) до 6 (воскресенье).

calendar.timegm (tupletime)

Инверсия time.gmtime: принимает момент времени в форме кортежа и возвращает тот же момент, что и число с плавающей запятой в секундах с начала эпохи.

calendar.weekday (год, месяц, день)

Возвращает код дня недели для указанной даты. Коды дня недели: от 0 (понедельник) до 6 (воскресенье); номера месяцев от 1 (январь) до 12 (декабрь).

Другие модули и функции

Если вам интересно, то здесь вы найдете список других важных модулей и функций для игры с датой и временем в Python —