time,时间模块比较重要,但不难学,主要是要学会转换时间格式。计算机的时间都是时间戳。人是看不懂的。写出时间转换的固定格式语句。import time # 首先就是引入时间模块。
time.time() # 取得当前时间的时间戳。时间戳就是从1970.1.1日零点开始,每秒钟加一,所有秒数加起来得到的一个数字。哦,python中时间有三种表现形式(真复杂)。1.时间戳是给机器看的(time.time())。2.格式化时间(strftime),根据我们的需要来格式化时间的显示。3.结构化时间(struct_time),可以把时间进行分类,如年,月,日等等。格式化时间固定语句如下:
s = time.strftime('%Y-%m-%d %H:%M:%S') # 这里的格式为:2019-02-24 23:18:43
print(s)
日期格式化标准(照抄老师教案,手动惭愧):
%y 两位数的年年份表示(00-99)
%Y 四位数的年年份表示(000-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)星期天为星期的开始
%w 星期(0-6),星期天为星期的开始
%W ⼀一年年中的星期数(00-53)星期⼀一为星期的开始
%x 本地相应的⽇日期表示
%X 本地相应的时间表示
%Z 当前时区的名称
%% %号本身
打印结构化时间:
print(time.localtime()) # 打印结果为:time.struct_time(tm_year=2019, tm_mon=2, tm_mday=24, tm_hour=23, tm_min=29, tm_sec=31, tm_wday=6, tm_yday=55, tm_isdst=0)
给定一个时间,转换为格式化时间。
ti = time.localtime(1234567890) # 在localtime的括号里可以给定一个时间戳数字。就可以把这个时间戳转换为格式化时间。
print(ti) # 打印结果为:time.struct_time(tm_year=2009, tm_mon=2, tm_mday=14, tm_hour=7, tm_min=31, tm_sec=30, tm_wday=5, tm_yday=45, tm_isdst=0)
这样就可以很容易得取得格式化时间的各个部分了。
t = time.localtime(1234567890) # 结构化时间
s = time.strftime("%Y-%m-%d %H:%M:%S", t) # 格式化这个时间
print(s) # 打印结果为:2009-02-14 07:31:30, 这是人能看懂的时间格式
实现反过来的功能(格式化时间转换成时间戳):
s = "2020-10-01 12:18:12"
t = time.strptime(s, "%Y-%m-%d %H:%M:%S") # 转化成结构时间
print(time.mktime(t)) # 转换成时间戳
转来转去的关键就是locltime(),结构化时间是时间戳和格式化时间之间的桥梁。必须先转化为结构化时间,才能用strftime和strptime继续转化。
时间差的计算:
import time
true_time=time.mktime(time.strptime('2017-09-11 08:30:00','%Y-%m-%d%H:%M:%S'))
time_now=time.mktime(time.strptime('2017-09-12 11:00:00','%Y-%m-%d%H:%M:%S'))
dif_time=time_now-true_time
struct_time=time.localtime(dif_time)
print(struct_time)
print('过去了%d年%d月%d天%d小时%d分钟%d秒'%(struct_time.tm_year-1970,struct_time.tm_mon-1,struct_time.tm_mday,struct_time.tm_hour,struct_time.tm_min,struct_time.tm_sec))