Промышленное производство
Промышленный Интернет вещей | Промышленные материалы | Техническое обслуживание и ремонт оборудования | Промышленное программирование |
home  MfgRobots >> Промышленное производство >  >> Industrial programming >> Python

Работа с датами и временем в Python: Практическое руководство

Что такое Tick (тик)

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

Популярный модуль time предоставляет функции для работы со временем и преобразования представлений. Функция time.time() возвращает текущее системное время в тиках от эпохи.

Пример

Live Demo
#!/usr/bin/python
import time
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 (кортеж времени)

Многие функции модуля time работают со временем как с кортежем из 9 чисел:

ИндексПолеЗначения
04-значный год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 с атрибутами:

ИндексАтрибутЗначения
0tm_year2008
1tm_mon1–12
2tm_mday1–31
3tm_hour0–23
4tm_min0–59
5tm_sec0–61
6tm_wday0–6 (0 — понедельник)
7tm_yday1–366
8tm_isdst-1, 0, 1

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

Для преобразования секунд от эпохи в time-tuple передайте значение в функцию (например, localtime):

Live Demo
#!/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():

Live Demo
#!/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

Календарь на месяц

Модуль calendar предоставляет методы для работы с годовыми и месячными календарями. Пример — календарь на январь 2008:

Live Demo
#!/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

Модуль time

Модуль time предоставляет функции для работы со временем и преобразования. Список методов:

№Функция и описание
1time.altzone — смещение локального DST часового пояса в секундах к западу от UTC (отрицательное, если DST к востоку от UTC, как в Западной Европе). Использовать только если daylight ненулевое.
2time.asctime([tupletime]) — принимает time-tuple, возвращает читаемую 24-символьную строку, напр. 'Tue Dec 11 18:07:14 2008'.
3time.clock() — текущее CPU-время в секундах (float). Для измерения вычислительных затрат полезнее time.time().
4time.ctime([secs]) — как asctime(localtime(secs)); без аргументов как asctime().
5time.gmtime([secs]) — принимает секунды от эпохи, возвращает time-tuple с UTC (tm_isdst всегда 0).
6time.localtime([secs]) — принимает секунды от эпохи, возвращает time-tuple с локальным временем (tm_isdst 0 или 1).
7time.mktime(tupletime) — принимает time-tuple в локальном времени, возвращает секунды от эпохи (float).
8time.sleep(secs) — приостанавливает вызывающий поток на secs секунд.
9time.strftime(fmt[,tupletime]) — принимает time-tuple в локальном времени, возвращает строку по формату fmt.
10time.strptime(str, fmt='%a %b %d %H:%M:%S %Y') — парсит строку по формату fmt, возвращает time-tuple.
11time.time() — текущий момент времени, секунды от эпохи (float).
12time.tzset() — сброс правил конвертации времени. Переменная окружения TZ определяет, как.

Два важных атрибута модуля time:

№Атрибут и описание
1time.timezone — смещение в секундах локального часового пояса (без DST) от UTC (>0 в Америке; ≤0 в Европе, Азии, Африке).
2time.tzname — пара строк, зависящих от локали: имена часового пояса без и с DST соответственно.

Модуль calendar

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

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

№Функция и описание
1calendar.calendar(year,w=2,l=1,c=6) — многострочная строка с календарём года в три колонки, разделённые c пробелами. w — ширина даты в символах; длина строки 21*w+18+2*c. l — строк на неделю.
2calendar.firstweekday() — текущий код дня недели, начинающей неделю. По умолчанию 0 (понедельник).
3calendar.isleap(year) — True, если год високосный, иначе False.
4calendar.leapdays(y1,y2) — общее число високосных дней в годах range(y1,y2).
5calendar.month(year,month,w=2,l=1) — многострочная строка с календарём месяца, по одной строке на неделю плюс две заголовка. w — ширина даты; длина строки 7*w+6. l — строк на неделю.
6calendar.monthcalendar(year,month) — список списков int. Каждый подсписок — неделя. Дни вне месяца = 0; дни месяца = их номера (1+).
7calendar.monthrange(year,month) — два целых: код дня недели для 1-го числа месяца и число дней в месяце. Коды 0 (пн)–6 (вс); месяцы 1–12.
8calendar.prcal(year,w=2,l=1,c=6) — как print calendar.calendar(...).
9calendar.prmonth(year,month,w=2,l=1) — как print calendar.month(...).
10calendar.setfirstweekday(weekday) — устанавливает первый день недели по коду weekday (0–6).
11calendar.timegm(tupletime) — обратная к time.gmtime: принимает time-tuple, возвращает секунды от эпохи (float).
12calendar.weekday(year,month,day) — код дня недели для даты. Коды 0–6; месяцы 1–12.

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

Если интересно, вот другие важные модули для работы с датой и временем:

Python

  1. Освоение типов данных в Python: практическое руководство
  2. Мастерство операторов Python: Полное руководство
  3. Оператор pass в Python: практическое руководство
  4. Аргументы функций в Python: позиционные, именованные и параметры по умолчанию
  5. Словари в Python: создание, манипуляции и продвинутые техники
  6. Модуль datetime в Python: практическое руководство по датам, времени и часовым поясам
  7. Получение текущей даты и времени в Python: практическое руководство
  8. Python: получение текущего времени и работы с часовыми поясами
  9. Освоение модуля time в Python: функции, структуры и практические примеры
  10. Освоение Python time.sleep(): лучшие практики, многопоточность и реальные примеры