python time模块详述

time模块为用户提供各种操作时间的方法


时间的三种表现形式:

  1. 时间戳:是基于1970年1月1日0时0分0秒至今的秒数,是一个浮点数。
  2. struct_time()类型:有九个元素的时间元组,如下:
索引(Index) 属性(Attribute) 值(Values)
0 tm_year(年) 比如2019
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
6 tm_wday(一周的第几天) 0 - 6
7 tm_yday(一年中的第几天) 1 - 366
8 tm_isdst(是否是夏令时) 默认为-1
  1. 格式化时间:格式化的时间更具可读性,包括自定义格式和固定格式。

python中时间日期格式化符号:

格式化符号 意义 备注
%y 去掉世纪的年份(00-99) 两位数的年份
%Y 完整的年份(0000-9999) 四位数的年份
%m 月份(01-12)
%d 一个月中的第几天(0-31)
%H 24小时制小时数(0-23)
%I 12小时制小时数(01-12)
%M 分钟数(00=59)
%S 秒(00-59)
%a 本地简化星期名称
%A 本地完整星期名称
%b 本地简化的月份名称
%B 本地完整的月份名称
%c 本地相应的日期表示和时间表示
%j 一年中的第几天(001-366)
%p 本地A.M.或P.M.的等价符
%U 一年中的星期数(00-53) 星期天为一星期的开始,第一个星期天之前的所有天数都放在第0周
%w 星期(0-6) 0为星期天
%W 一年中的星期数(00-53) 星期一为一星期的开始
%x 本地相应的日期 年月日
%X 本地相应的时间 时分秒
%Z 当前时区的名称
%% %号本身

time模块的常见方法(属性):

方法 参数 返回值 备注
time() 无需参数 返回当前时间戳
localtime([secs]) 默认参数secs为时间戳,默认当前时间戳 返回struct_time()时间元组
mktime(t) 必选参数t为struct_time()时间元组 返回struct_time()时间元组所对应的时间戳 返回值是一个浮点数
gmtime([secs]) 默认参数secs为时间戳,默认当前时间戳 返回struct_time()时间元组 格式化0时区时间戳
asctime([t]) 默认参数t为struct_time()时间元组,默认当前时间元组 返回24字符的格式化时间字符串 返回值格式为''%a %b %d %H:%M:%S %Y''
ctime([secs]) 默认参数secs为时间戳,默认当前时间戳 返回24字符的格式化时间字符串 格式与asctime方法一致,参数secs=None时传入当前时间戳
strftime(format[,t]) 必选参数format为格式字符串;

默认参数t为struct_time()时间元组,默认当前时间元组
返回指定格式的时间字符串
stptime(str[,format]) 必选参数str为格式化时间字符串;

默认参数format为与str格式一致的格式字符串,默认asctime方法返回格式
返回struct_time()时间元组 若str与format格式不一致,抛出ValueError错误
sleep(secs) 必选参数secs为进程挂起的时间 返回None
clock() 无需参数 返回当前cpu时间 Unix:始终返回进程时间

Windows:
第一次调用,返回进程运行实际时间
第二次调用,返回自上一次调用到现在的运行时间
perf_counter() 无需参数 返回性能计数器的值 单位为秒
process_time() 无需参数 返回当前进程使用cpu的时间 单位为秒
monotonic() 无需参数 返回开机后系统的流逝时间 单位为秒
timezone 返回本地时区的时间偏移 单位为秒
tzname 返回本地时区的名字
altzone 返回格林威治西部的夏令时地区的时间偏移 单位为秒
get_clock_info(str) 参数str为一些内置方法名字符串 返回其方法属性 支持time、monotonic、process_time、perf_counter


三种时间类型的转换关系


time模块小应用

'''查看函数的执行时间,超出设定的标准后报错'''
import time
# 自定义异常
class TimeOutError(Exception):
    pass
# 定义含参数的装饰器
def log(time_out):
    def decorator(func):
        def wrapper(*args,**kwargs):
            t0 = time.time()
            res = func(*args,**kwargs)
            t = time.time() - t0
            print(f'被装饰函数{func.__name__}执行时间为{t}')
            if t > time_out:
                raise TimeOutError('Run time of function is overdue')
            return res
        return wrapper
    return decorator

@log(3)
def f():
    time.sleep(3)

f()

'''打印当前时间'''
import time
print(time.strftime('%Y-%m-%d %H:%M:%S',time.localtime()))

你可能感兴趣的:(python time模块详述)