Мало знаний, большой вызов! Эта статья участвует в "Необходимые знания для программистов«Творческая деятельность.
Привет всем, яодна чаша в неделю, передняя часть, которая не хочет быть пьяной (завернутой). Если написанной статье посчастливилось получить вашу благосклонность, мне очень повезло~
Есть много способов работать со временем и датой в Python, и преобразование даты является наиболее распространенным. Временные интервалы в Python представляют собой десятичные числа с плавающей запятой в секундах.
отметка времени
В Python текущее время в основном хранится в виде временной метки. Единицы меток времени лучше всего подходят для арифметики дат. Но даты до 1970 года не могут быть представлены таким образом. Не так уж и далеко, UNIX и Windows поддерживают только до 2038 года.
отметка времениОтносится к общему количеству секунд с 01 января 1970 года 00:00:00 по Гринвичу до настоящего времени. С точки зрения непрофессионала, временная метка — это полная проверяемая часть данных, которая может указывать на то, что часть данных уже существует в определенный момент времени. В основном предлагается предоставить пользователям электронные доказательства, подтверждающие время создания определенных данных пользователей.
используется в питонеtime
модульныйtime
функция для получения текущей метки времени
образец кода
import time
time_stamp = time.time()
print("当前的时间戳为:", time_stamp) # 当前的时间戳为: 1590585400.6808906
кортеж времени
Многие функции в Python работают со временем, объединяя 9 групп чисел в один элемент.
серийный номер | Атрибуты | ценность |
---|---|---|
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 |
Ссылаться научебник для новичков
получить текущее время
Преобразование из возвращенной метки времени в кортеж времени может быть выполнено с помощьюtime
модульныйlocaltime()
функция;time.gmtime([secs])
также возвращает кортеж времени
образец кода
import time
time_stamp = time.time() # 获取当前时间戳
localtime = time.localtime(time_stamp)
print(localtime)
# time.struct_time(tm_year=2020, tm_mon=5, tm_mday=27, tm_hour=21, tm_min=36, tm_sec=42, tm_wday=2, tm_yday=148, tm_isdst=0)
время форматирования
можно использоватьtime
модульныйasctime
Функция форматирует кортеж времени в простейшем читаемом виде, и если аргумент не задан, то означает текущее время
time.ctime([secs])
Этот параметр принимает временную метку в качестве единицы измерения и возвращает дату в читаемом виде, не присваивая параметру эквивалентноtime.asctime()
образец кода
import time
time_stamp = time.time()
localtime = time.asctime(time.localtime(time_stamp))
print("当前时间为:", localtime) # 当前时间为: Wed May 27 21:47:48 2020
дата формата
Символы форматирования даты в Python:
символ | описывать |
---|---|
%y | Двузначный год (00-99) |
%Y | Четырехзначный год (0000-9999) |
%m | Месяц (01-12) |
%d | день месяца (1-31) |
%H | 24-часовые часы (0-23) |
%I | 12-часовые часы (01-12) |
%M | минуты (00=59) |
%S | Секунды (00-59) |
%a | местное сокращенное название дня недели |
%A | местное полное название недели |
%b | местное сокращенное название месяца |
%B | местное полное название месяца |
%c | Локальное соответствующее представление даты и представление времени |
%j | день года (001-366) |
%p | Эквивалент местного AM или PM. |
%U | Номер недели в году (00-53) Воскресенье – начало недели |
%w | Неделя (0-6), воскресенье — начало недели |
%W | Номер недели в году (00-53) Понедельник – начало недели |
%x | Местное соответствующее представление даты |
%X | представление местного времени |
%Z | Название текущего часового пояса |
%% | Сам знак % |
time mktime(结构化的时间或者完整的9位元组元素)
функция выполняется сgmtime()
, localtime()
Противоположная операция, которая принимает объект struct_time в качестве аргумента, возвращает число с плавающей запятой, представляющее время в секундах. Если введенное значение не является допустимым временем, будет выдано сообщение об ошибке OverflowError или ValueError.
образец кода
import time
time_stamp = time.time()
print(time_stamp) # 1590590683.0062041
# 4位数的年份-月份-天数 24小时制:分钟:秒 周几 今年的第几天
localtime = time.strftime("%Y-%m-%d %H:%M:%S %A %j", time.localtime(time_stamp))
print(localtime) # 2020-05-27 22:44:43 Wednesday 148
# 转变为时间元组
localtime_tuple = time.strptime(localtime, "%Y-%m-%d %H:%M:%S %A %j")
print(localtime_tuple) # time.struct_time(tm_year=2020, tm_mon=5, tm_mday=27, tm_hour=22, tm_min=44, tm_sec=43, tm_wday=2, tm_yday=148, tm_isdst=-1)
# 将时间元组转换为秒(时间戳)
time_stamp = time.mktime(localtime_tuple)
print(time_stamp) # 1590590683.0 # 与一开始获取的基本相等
Получить процессорное время
time.perf_counter()
Возвращает точное время таймера (время работы системы), включая время сна всей системы. Поскольку базовая точка возвращаемого значения не определена, допустима только разница между результатами последовательных вызовов.
time.process_time()
Возвращает сумму процессорного времени текущего выполнения процесса, исключая время сна. Поскольку базовая точка возвращаемого значения не определена, допустима только разница между результатами последовательных вызовов.
time.sleep()
Функция задерживает выполнение вызывающего потока, а параметр secs может указывать на количество секунд, указывающее время, в течение которого процесс приостановлен.
образец кода
import time
# 获取系统运行该函数的时间
print(time.perf_counter()) # 0.0208446
time.sleep(2)
# 读取系统运行该函数的时间,
print(time.perf_counter()) # 2.0208952 # 两者的差距微乎其微
# 获取当前进程执行 CPU 的时间总和
print(time.process_time()) # 0.015625 # 不包含睡眠时间
Модуль календаря
Calendar
Модуль календаря, все функции в этом модуле связаны с календарем, например, печать ежемесячного календаря символов определенного месяца.
функция | описывать |
---|---|
calendar.calendar(year,w=2,l=1,c=6) |
Возвращает годовой календарь в многострочном строковом формате, где 3 месяца находятся в одной строке, а расстояние между интервалами равно c. Дневной интервал ширины составляет w символов. Длина каждой линии 21*W+18+2*C. l — количество строк в неделю. |
calendar.month(year,month,w=2,l=1) |
Возвращает многострочный строковый формат год год месяц месяц календарь, две строки заголовков, одну строку для недели. Дневной интервал ширины составляет w символов. Длина каждой строки 7*w+6. l — количество строк в неделю. |
calendar.monthrange(year,month) |
Возвращает два целых числа. Первое — это день недели месяца, а второе — день месяца. День недели от 0 (понедельник) до 6 (воскресенье). |
calendar.leapdays(y1,y2) |
Возвращает общее количество високосных лет между Y1 и Y2. |
calendar.isleap(year) |
Определяет, является ли год високосным, и возвращает True, если это високосный год, и false в противном случае. |
образец кода
import calendar
# 打印今年的年历
print(calendar.calendar(2020))
# 打印本月的月历
print(calendar.month(2020, 5))
# monthrange方法
print(calendar.monthrange(2020, 5)) # (4, 31) # 5月份的第一天是周五一共31天,因为周一是0所以4是周五
# 计算1000年到2000年的闰年总数
print(calendar.leapdays(1000, 2000)) # 242
# 判断今年是否为闰年
print(calendar.isleap(2020)) # True
time.strftime(fmt[,tupletime])
Принимает кортеж времени и возвращает местное время в виде удобочитаемой строки в формате, определяемом fmt.
time.strptime(str,fmt='%a %b %d %H:%M:%S %Y')
Разбирает строку времени в кортеж времени в соответствии с форматом fmt.