Программа Python может обрабатывать дату и время несколькими способами. Преобразование между форматами даты является общей рутиной для компьютеров. Модули времени и календаря в Python помогают отслеживать дату и время.
Временные интервалы числа с плавающей точкой в секундах. Особые моменты времени выражаются в секундах с 12:00, 1 января 1970 (эпохи).
Существует модуль time доступный в Python, который обеспечивает функции для работы со временем, и для преобразования между представлениями. Функция time.time() возвращает текущее системное время в тиках, с 12:00, 1 января 1970 (эпоха).
#!/usr/bin/python3 import time; # Это необходимо для включения модуля времени. ticks = time.time() print ("Количество тиков с 12:00am, January 1, 1970:", ticks)
Это произведет следующий результат:
Количество тиков с 12:00am, January 1, 1970: 1455508609.34375
Расчет даты легко сделать с тиками. Однако дата до эпохи не могут быть представлены в таком виде. Даты в далеком будущем, также не могут быть представлены следующим образом – точка отсечки где-то в 2038 для UNIX и Windows.
Многие из функций времени в языке 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 |
Для примера:
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 |
Для того, чтобы перевести расчет времени от нескольких секунд, так как значение с плавающей точкой эпохи в timetuple, передается значение с плавающей запятой в функцию (например, localtime), которая возвращает timetuple со всеми действующими девятью пунктами.
#!/usr/bin/python3 import time localtime = time.localtime(time.time()) print ("Текущее локальное время :", localtime)
Это произведет следующий результат, который может быть отформатирован в любую другую объектную форму:
Текущее локальное время : time.struct_time(tm_year = 2017, tm_mon = 9, tm_mday = 29, tm_hour = 10, tm_min = 00, tm_sec = 1, tm_wday = 0, tm_yday = 46, tm_isdst = 0)
Вы можете отформатировать в любое время в соответствии с вашим требованием, но простой метод, чтобы получить время в читабельном формате asctime():
#!/usr/bin/python3 import time localtime = time.asctime( time.localtime(time.time()) ) print ("Текущее локальное время :", localtime)
Это покажет следующий результат:
Текущее локальное время : Fri Sen 29 10:00:01 2017
Модуль calendar предоставляет широкий спектр методов, чтобы играть с годовыми и ежемесячными календарями. Здесь мы печатаем календарь для данного месяца (январь 2017):
#!/usr/bin/python3 import calendar cal = calendar.month(2017, 9) print ("Вот календарь:") print (cal)
Это выведет следующий результат:
Вот календарь: September 2017 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
Существует модуль time, доступный в Python, который обеспечивает функции для работы со временем и для преобразования между представлениями. Вот список всех доступных методов.
S.No. | Описание функции |
---|---|
1 | time.altzone – Смещение часового пояса DST, в секундах к западу от UTC, если он определен. Он является отрицательным, если локальный часовой пояс DST находится к востоку от UTC (как и в Западной Европе, включая Великобританию). Используйте его, если светлое время суток не равно нулю. |
2 | time.asctime([tupletime]) – Принимает тайм-кортеж и возвращает читаемую строку 24 символов, такую как «Fri Sen 29 10:00:01 2017». |
3 | time.clock() – Возвращает текущее время CPU с плавающей точкой количества секунд. Для измерения вычислительных затрат различных подходов, значение time.clock является более полезным, чем time.time(). |
4 | time.ctime([secs]) – Как asctime (localtime(сек)) и без аргументов, как asctime() |
5 | time.gmtime([secs]) – Принимает значение, выраженное в секундах с начала эпохи и возвращает кортеж с временем в формате UTC. Note − t.tm_isdst всегда 0 |
6 | time.localtime([secs]) – Принимает значение, выраженное в секундах с началом эпохи и возвращает кортеж с местным временем (t.tm_isdst равен 0 или 1, в зависимости от того, применяется ли DST к мгновенным секундам по локальным правилам). |
7 | time.mktime(tupletime) – Принимает значение, выраженное как тайм-кортеж по местному времени и возвращает значение с плавающей точкой с моментом, выраженным в секундах с началом эпохи. |
8 | time.sleep(secs) – Приостановка вызывающего потока за secs секунд. |
9 | time.strftime(fmt[, tupletime]) – Принимает мгновение, выраженное как тайм-кортеж по местному времени и возвращает строку, представляющий момент, как указано в строках FMT. |
10 | time.strptime(str, fmt = ‘%a %b %d %H: %M: %S %Y’) – Анализирует ул соответствии с форматом строки fmt и возвращает мгновенно, в формате времени кортежа. |
11 | time.time() – Возвращает текущий момент времени, число с плавающей точкой секунд с начала эпохи. |
12 | time.tzset() – Сбрасывает правила преобразования времени, используемые подпрограммами библиотеки. Переменной среды TZ определяет, как это делается. |
Есть два важных атрибута, доступных с модулем времени. Это:
S.No. | Атрибут & Описание |
---|---|
1 | time.timezone Атрибут time.timezone это смещение в секундах местного часового пояса (без ДСТ) от UTC (> 0 в Северной и Южной Америке; <= 0 в большинстве стран Европы, Азии, Африки). |
2 | time.tzname Атрибут time.tzname представляет собой пару локально-зависимых строк, которые являются именами местного часового пояса без и с DST, соответственно. |
Модуль calendar предоставляет функции календаря, связанные, в том числе с функциями для печати текста календаря за определенный месяц или год.
По умолчанию, календарь начинается в понедельник, как первый день недели и воскресенье как последний. Чтобы изменить это, вызовите функцию calendar.setfirstweekday().
Ниже приведен список функций, доступных с модулем calendar:
S.No. | Описание функции |
---|---|
1 | calendar.calendar(year,w = 2,l = 1,c = 6) Возвращает многострочную строку с календарем на год, отформатированный в три колонки, разделенных пробелами. w – ширина в символах каждой даты; каждая линия имеет длину 21 * W + 18 + 2 * с. I – количество строк для каждой недели. |
2 | calendar.firstweekday() Возвращает текущую установку для буднего дня, которая начинается каждой неделю. По умолчанию, когда импортирован первый календарь, это 0, то есть понедельник. |
3 | calendar.isleap(год) Возвращает True, если год является високосным; в противном случае значение False. |
4 | calendar.leapdays(y1,y2) Возвращает общее количество високосных дней в последующие годы в пределах диапазона (y1, y2). |
5 | calendar.month(year,month,w = 2,l = 1) Возвращает многострочную строку с календарем месяца года, одну строку в неделю плюс две строки заголовка. w – ширина символов каждой даты; каждая строка имеет длину 7*w+6. I – количество строк для каждой недели. |
6 | calendar.monthcalendar(год, месяц) Возвращает список целых чисел. Каждый сублист обозначает неделю. Дней за месяц и год устанавливаются в 0; дней в течение месяца будут установлены в дней в месяце, 1 и выше. |
7 | calendar.monthrange (год, месяц) Возвращает два числа. Первый-это код дня недели для первого дня месяца в году; второй-количество дней в месяце. Коды дней недели-от 0 (понедельник) до 6 (воскресенье); число месяцев-от 1 до 12. |
8 | calendar.prcal(year,w = 2,l = 1,c = 6) Как печать calendar.calendar(year,w,l,c). |
9 | calendar.prmonth(year,month,w = 2,l = 1) Как печать calendar.month(year,month,w,l). |
10 | calendar.setfirstweekday(день недели) Устанавливает первый день каждой недели в будний день недели. Будние коды 0 (понедельник) до 6 (воскресенье). |
11 | calendar.timegm(tupletime) Обратное time.gmtime: принимает мгновенную форму время-кортеж и возвращает тот же самый момент, как число с плавающей точкой в секундах с начала эпохи. |
12 | calendar.weekday(год, месяц, день) Возвращает код дня недели для указанной даты. Коды дней недели-от 0 (понедельник) до 6 (воскресенье); числа месяцев-от 1 (январь) до 12 (декабрь). |
Если вы заинтересованы, то здесь вы найдете список других важных модулей и функций, предназначенные для обработки даты и времени в Python: