Python 3 - Дата и время
Программа Python может обрабатывать дату и время несколькими способами. Преобразование между форматами даты - обычная рутинная работа для компьютеров. Модули времени и календаря Python помогают отслеживать дату и время.
Что такое клещ?
Временные интервалы представляют собой числа с плавающей запятой в секундах. Конкретные моменты времени выражаются в секундах с 12:00 1 января 1970 г. (эпоха).
Есть популярный timeдоступный в Python модуль, который предоставляет функции для работы со временем и для преобразования между представлениями. Функцияtime.time() возвращает текущее системное время в тиках с 12:00 1 января 1970 г. (эпоха).
пример
#!/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
Арифметику даты легко выполнять с помощью тиков. Однако даты до эпохи не могут быть представлены в таком виде. Даты далекого будущего также не могут быть представлены таким образом - точка отсечения для UNIX и Windows наступит где-то в 2038 году.
Что такое 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 |
Например -
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), которая возвращает кортеж времени со всеми допустимыми девятью элементами.
#!/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() -
#!/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 г.) -
#!/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
Модуль времени
Есть популярный timeмодуль, доступный в Python, который предоставляет функции для работы со временем и для преобразования между представлениями. Вот список всех доступных методов.
Sr.No. | Описание функции |
---|---|
1 |
time.altzone
Смещение местного часового пояса летнего времени в секундах к западу от UTC, если он определен. Это отрицательно, если местный часовой пояс DST находится к востоку от UTC (как в Западной Европе, включая Великобританию). Используйте это, если дневной свет отличен от нуля. |
2 |
time.asctime ([время кортежа])
Принимает кортеж времени и возвращает читаемую 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, в зависимости от того, применяется ли летнее время к мгновенным секундам по местным правилам). |
7 |
time.mktime (время кортежа)
Принимает момент, выраженный как кортеж по местному времени, и возвращает значение с плавающей запятой с моментом, выраженным в секундах с начала эпохи. |
8 |
time.sleep (сек)
Приостанавливает вызывающий поток на несколько секунд. |
9 |
time.strftime (fmt [, время кортежа])
Принимает момент времени, выраженный в виде кортежа по местному времени, и возвращает строку, представляющую момент, указанный в строке fmt. |
10 |
time.strptime (str, fmt = '% a% b% d% H:% M:% S% Y')
Анализирует str в соответствии со строкой формата fmt и возвращает момент времени в формате кортежа времени. |
11 |
time.time ()
Возвращает текущий момент времени, число секунд с плавающей запятой, прошедшее с начала эпохи. |
12 |
time.tzset ()
Сбрасывает правила преобразования времени, используемые библиотечными подпрограммами. Переменная среды TZ указывает, как это делается. |
В модуле времени доступны два важных атрибута. Они -
Sr.No. | Атрибут и описание |
---|---|
1 | time.timezone Атрибут time.timezone - это смещение в секундах местного часового пояса (без летнего времени) от UTC (> 0 в Северной и Южной Америке; <= 0 в большинстве стран Европы, Азии и Африки). |
2 | time.tzname Атрибут time.tzname - это пара строк, зависящих от языкового стандарта, которые представляют собой названия местного часового пояса без летнего времени и с указанием летнего времени соответственно. |
Модуль календаря
Модуль календаря предоставляет функции, связанные с календарем, в том числе функции для печати текстового календаря на определенный месяц или год.
По умолчанию в календаре понедельник является первым днем недели, а воскресенье - последним. Чтобы изменить это, вызовитеcalendar.setfirstweekday() функция.
Вот список функций, доступных с calendar модуль -
Sr.No. | Описание функции |
---|---|
1 | calendar.calendar(year,w = 2,l = 1,c = 6) Возвращает многострочную строку с календарем на год, отформатированную в три столбца, разделенных пробелами c. w - ширина в символах каждой даты; каждая строка имеет длину 21 * w + 18 + 2 * c. l - количество строк на каждую неделю. |
2 | calendar.firstweekday( ) Возвращает текущую настройку дня недели, начинающегося каждую неделю. По умолчанию при первом импорте календаря это 0, что означает понедельник. |
3 | calendar.isleap(year) Возвращает True, если год високосный; в противном случае - False. |
4 | calendar.leapdays(y1,y2) Возвращает общее количество високосных дней в годах в диапазоне (y1, y2). |
5 | calendar.month(year,month,w = 2,l = 1) Возвращает многострочную строку с календарем на месяц месяц год год, одну строку в неделю плюс две строки заголовка. w - ширина в символах каждой даты; каждая строка имеет длину 7 * w + 6. l - количество строк на каждую неделю. |
6 | calendar.monthcalendar(year,month) Возвращает список списков целых чисел. Каждый подсписок обозначает неделю. Дни вне месяца месяц года года устанавливаются на 0; Дни в месяце устанавливаются на их день месяца, 1 и выше. |
7 | calendar.monthrange(year,month) Возвращает два целых числа. Первый - это код дня недели для первого числа месяца месяца в году года; второй - количество дней в месяце. Коды дней недели от 0 (понедельник) до 6 (воскресенье); номера месяцев от 1 до 12. |
8 | calendar.prcal(year,w = 2,l = 1,c = 6) Как print calendar.calendar (год, ш, л, в). |
9 | calendar.prmonth(year,month,w = 2,l = 1) Как print calendar.month (год, месяц, w, l). |
10 | calendar.setfirstweekday(weekday) Устанавливает первый день каждой недели как рабочий день с кодом дня недели. Коды дней недели от 0 (понедельник) до 6 (воскресенье). |
11 | calendar.timegm(tupletime) Обратное к time.gmtime: принимает момент времени в форме кортежа времени и возвращает тот же момент в виде числа секунд с плавающей запятой, прошедших с эпохи. |
12 | calendar.weekday(year,month,day) Возвращает код дня недели для указанной даты. Коды дней недели от 0 (понедельник) до 6 (воскресенье); номера месяцев от 1 (январь) до 12 (декабрь). |
Другие модули и функции
Если вам интересно, то здесь вы найдете список других важных модулей и функций для игры с датой и временем в Python -
- Модуль datetime
- Модуль pytz
- Модуль dateutil