# File:learning_014_module_time.py
# Datetime:2022-04-16 10:32
import time
# python中有3种方式来表示时间
# 1. 时间戳(timestamp)
# 2. 格式化的时间字符串
# 3. 元组时间(结构化时间)
# 时间戳概念:时间戳是指格林尼治时间1970年1月1日00时00分00秒(北京时间1970-01-01 08:00:00)到现在的总秒数.
# 格式化时间
"""
%y 2位数的年份表示(00~99)
%Y 4位数的年份表示(0000~9999)
%m 月份(01~12)
%d 月的一天(0~31)
%H 24小时制小时数(0~23)
%I 12小时制小时数(0~12)
%M 分钟数(00~59)
%M 秒(00~59)
%a 本地简化的星期名称
%A 本地完整的星期名称
%b 本地简化的月份名称
%B 本地完整的月份名称
%c 本地相应的日期表示和时间表示
%j 年内的一天(001-366)
%p 本地A.M或P.M的等价符
%U 一年中的星期数(00~53) 星期天为一星期的开始
%w 星期(0~6)星期天为一星期的开始
%W 一年中的星期数(00~53) 星期一为一星期的开始
%x 本地相应的日期表示
%X 本地相应的时间表示
%Z 当前时区的名称
"""
# 时间元组
"""
tm_year 年 0000~9999
tm_mon 月 0-12
tm_mday 日 1-31
tm_hour 时 0-23
tm_min 分 0-59
tm_sec 秒 0-60/61(60或61 61位闰秒)
tm_wday 星期 0-6(0是周一)
tm_yday 一年的第几天 1-366
tm_isdst 夏令时 -1,0,1(-1是决定是否为夏令时的旗帜)
"""
# time的函数
# time.time()# 返回当前时间的时间戳(从格林尼治时间1970-01-01 00:00:00起至现在的总秒数)
timestamp = time.time()
print(timestamp)
# time.localtime() 将时间戳格式化为本地时间,返回struct_time(时间元组)对象
# localtime不传入参数时,默认为使用当前时间戳
localtime = time.localtime()
localtime2 = time.localtime(0) # 传入参数 单位为秒
print(localtime, "\n", localtime2)
# time.asctime 获取可读的时间模式(最简单的)
print(time.asctime(time.localtime()))
# time.strftime 格式化日期
strfm_time = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())
print(strfm_time)
# time.strptime() 根据指定的格式把一个字符串解析为时间元组对象(struct_time)
strp_time = time.strptime(strfm_time, "%Y-%m-%d %H:%M:%S")
print(strp_time)
# time.mktime() 接收时间元组(struct_time)对象返回时间戳
mk_time = time.mktime(time.localtime())
print(mk_time)
# time.gmtime() 接收时间戳返回时间元组(struct_time)对象
gm_time = time.gmtime(time.time())
print(gm_time)
# time.sleep(1) 睡眠1秒
time.sleep(1)
# time.ctime() 接收时间戳,转化为time.asctime()简单的可读时间模式
c_time = time.ctime() # 相当于time.asctime()
print(c_time) # Sat Apr 16 13:49:40 2022
c_time2 = time.ctime(0) # 当前时区的时间戳转化为time.asctime()简单的可读时间模式
print(c_time2) # Thu Jan 1 08:00:00 1970
# time.perf_counter() 返回计时器的精准时间(系统的运行时间),包含整个系统的睡眠时间。
start_time = time.perf_counter()
time.sleep(3)
end_time = time.perf_counter()
print(end_time - start_time)
# time.process_time() 返回当前进程执行 CPU 的时间总和,不包含睡眠时间。
start_time1 = time.process_time()
time.sleep(3)
end_time2 = time.process_time()
print(end_time2 - start_time1)