Программа Python может обрабатывать дату и время несколькими способами. Преобразование между форматами даты — обычная задача для компьютеров. Модули времени и календаря Python помогают отслеживать дату и время.
Что такое тик?
Временные интервалы — это числа с плавающей точкой в секундах. Особые моменты времени выражаются в секундах с 12:00 утра, 1 января 1970 года (эпоха).
В Python есть популярный модуль времени, который предоставляет функции для работы со временем и для преобразования между представлениями. Функция time.time () возвращает текущее системное время в тиках с 12:00, 1 января 1970 года (эпоха).
пример
#!/usr/bin/python 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: 7186862.73399
Арифметика даты легко сделать с помощью галочек. Однако даты до эпохи не могут быть представлены в этой форме. Даты в далеком будущем также не могут быть представлены таким образом — точка отсечения наступает где-то в 2038 году для UNIX и Windows.
Что такое TimeTuple?
Многие из функций времени Python обрабатывают время как кортеж из 9 чисел, как показано ниже —
Индекс | поле | Ценности |
---|---|---|
0 | 4-значный год | 2008 |
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 |
Вышеуказанный кортеж эквивалентен структуре struct_time . Эта структура имеет следующие атрибуты —
Индекс | Атрибуты | Ценности |
---|---|---|
0 | tm_year | 2008 |
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), которая возвращает кортеж времени со всеми девятью действительными элементами.
#!/usr/bin/python import time; localtime = time.localtime(time.time()) print "Local current time :", localtime
Это приведет к следующему результату, который может быть отформатирован в любой другой презентабельной форме —
Local current time : time.struct_time(tm_year=2013, tm_mon=7, tm_mday=17, tm_hour=21, tm_min=26, tm_sec=3, tm_wday=2, tm_yday=198, tm_isdst=0)
Получение отформатированного времени
Вы можете отформатировать любое время в соответствии с вашими требованиями, но простой способ получить время в удобочитаемом формате — asctime () —
#!/usr/bin/python import time; localtime = time.asctime( time.localtime(time.time()) ) print "Local current time :", localtime
Это даст следующий результат —
Local current time : Tue Jan 13 10:17:09 2009
Получение календаря на месяц
Модуль календаря предоставляет широкий спектр методов для игры с годовыми и ежемесячными календарями. Здесь мы печатаем календарь на данный месяц (январь 2008) —
#!/usr/bin/python import calendar cal = calendar.month(2008, 1) print "Here is the calendar:" print cal
Это даст следующий результат —
Here is the calendar: January 2008 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 30 31
Модуль времени
В 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 (год, ш = 2, л = 1, с = 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 (год, месяц, ш = 2, L = 1) Возвращает многострочную строку с календарем на месяц месяц год, одну строку в неделю плюс две строки заголовка. w — ширина в символах каждой даты; каждая строка имеет длину 7 * w + 6. l — количество строк за каждую неделю. |
6 |
calendar.monthcalendar (год, месяц) Возвращает список списков целых. Каждый подсписок обозначает неделю. Дни вне месяца, месяца, года и года установлены на 0; дни в месяце устанавливаются на их день месяца, 1 и выше. |
7 |
calendar.monthrange (год, месяц) Возвращает два целых числа. Первый — это код дня недели для первого дня месяца месяца в году; второй — количество дней в месяце. Коды дня недели: от 0 (понедельник) до 6 (воскресенье); номера месяцев от 1 до 12. |
8 |
calendar.prcal (год, ш = 2, л = 1, с = 6) Как печатать calendar.calendar (год, ш, л, в). |
9 |
calendar.prmonth (год, месяц, ш = 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 (год, ш = 2, л = 1, с = 6)
Возвращает многострочную строку с календарем для года, отформатированного в три столбца, разделенных пробелами c. w — ширина в символах каждой даты; каждая строка имеет длину 21 * w + 18 + 2 * c. l — количество строк за каждую неделю.
calendar.firstweekday ()
Возвращает текущую настройку для дня недели, который начинается каждую неделю. По умолчанию при первом импортировании календаря это 0, что означает понедельник.
calendar.isleap (год)
Возвращает True, если год является високосным; в противном случае Ложь.
calendar.leapdays (y1, y2)
Возвращает общее количество високосных дней в годах в пределах диапазона (y1, y2).
calendar.month (год, месяц, ш = 2, L = 1)
Возвращает многострочную строку с календарем на месяц месяц год, одну строку в неделю плюс две строки заголовка. w — ширина в символах каждой даты; каждая строка имеет длину 7 * w + 6. l — количество строк за каждую неделю.
calendar.monthcalendar (год, месяц)
Возвращает список списков целых. Каждый подсписок обозначает неделю. Дни вне месяца, месяца, года и года установлены на 0; дни в месяце устанавливаются на их день месяца, 1 и выше.
calendar.monthrange (год, месяц)
Возвращает два целых числа. Первый — это код дня недели для первого дня месяца месяца в году; второй — количество дней в месяце. Коды дня недели: от 0 (понедельник) до 6 (воскресенье); номера месяцев от 1 до 12.
calendar.prcal (год, ш = 2, л = 1, с = 6)
Как печатать calendar.calendar (год, ш, л, в).
calendar.prmonth (год, месяц, ш = 2, L = 1)
Как печать calendar.month (год, месяц, ш, л).
calendar.setfirstweekday (день недели)
Устанавливает первый день каждой недели в код дня недели. Коды дня недели: от 0 (понедельник) до 6 (воскресенье).
calendar.timegm (tupletime)
Инверсия time.gmtime: принимает момент времени в форме кортежа и возвращает тот же момент, что и число с плавающей запятой в секундах с начала эпохи.
calendar.weekday (год, месяц, день)
Возвращает код дня недели для указанной даты. Коды дня недели: от 0 (понедельник) до 6 (воскресенье); номера месяцев от 1 (январь) до 12 (декабрь).
Другие модули и функции
Если вам интересно, то здесь вы найдете список других важных модулей и функций для игры с датой и временем в Python —