时间的表示方式
有3种表示方式:
- 时间戳:给机器看的(float格式)
- 格式化的字符串:给人看的(格式化时间)
- 元组:计算用的(结构化时间)
import time # 时间戳 # 返回一个时间戳,表示从 1970.1.1 到现在的秒数 print(time.time()) # 1553959680.65606 # 字符串时间 # 字母表示是固定的,但是格式不固定随便改 print(time.strftime("%Y-%m-%d %H:%M:%S")) # 2019-03-30 23:44:32 print(time.strftime("%Y/%m/%d %H:%M:%S")) # 2019/03/30 23:44:32 print(time.strftime("%H:%M:%S")) # 23:44:32 # 结构化时间 struct_time = time.localtime() print(struct_time) # time.struct_time(tm_year=2019, tm_mon=3, tm_mday=30, tm_hour=23, tm_min=45, tm_sec=54, tm_wday=5, tm_yday=89, tm_isdst=0) print(struct_time.tm_year) # 2019
时间的转换
时间戳不能和结构化时间直接转化,只能通过格式化时间进行中介。
时间戳 -----------localhost/gmtime-------------> 结构化时间
时间戳 <---------mktime---------------------------- 结构化时间
import time # 时间戳时间转换成格式化时间 t = time.time() print(t) # 转换确定的时间戳可以用 localtime 转换 print(time.localtime(1553962314)) # 转换 动态赋值 的 变量 时间可以用 gmtime 转换 print(time.gmtime(t)) # 格式化时间转换成 时间戳时间 用 mktime 转换 print(time.mktime(time.localtime())) # 运行结果: # 1553962325.1933188 # time.struct_time(tm_year=2019, tm_mon=3, tm_mday=31, tm_hour=0, tm_min=11, tm_sec=54, tm_wday=6, tm_yday=90, tm_isdst=0) # time.struct_time(tm_year=2019, tm_mon=3, tm_mday=30, tm_hour=16, tm_min=12, tm_sec=5, tm_wday=5, tm_yday=89, tm_isdst=0) # 1553962325.0
字符串时间 -----------strptime-------------> 结构化时间
字符串时间 <-----------strftime-------------- 结构化时间
# 将字符串时间转换成 结构化时间 用 strptime 转换 需要指定格式 print(time.strptime('2000-12.31','%Y-%m.%d')) # time.struct_time(tm_year=2000, tm_mon=12, tm_mday=31, tm_hour=0, tm_min=0, tm_sec=0, tm_wday=6, tm_yday=366, tm_isdst=-1) # 将结构化时间转换成 字符串时间 strftime 转换 需要指定格式 print(time.strftime('%m/%d/%Y %H:%M:%S',time.localtime(3000000000))) # 01/24/2065 13:20:00
ps:一些舒服的显示
# 一些舒服的显示 print(time.asctime()) # Sun Mar 31 00:24:40 2019 print(time.asctime(time.localtime(150000000))) # Thu Oct 3 10:40:00 1974 print(time.ctime()) # Sun Mar 31 00:26:46 2019 print(time.ctime(150000000)) # Thu Oct 3 10:40:00 1974
ps:计算时差:
# 计算时间差 true_time = time.mktime(time.strptime('2017-09-11 08:30:00','%Y-%m-%d %H:%M:%S')) now_time = time.mktime(time.strptime('2017-09-12 11:00:00','%Y-%m-%d %H:%M:%S')) dif_time = now_time - true_time struct_time = time.gmtime(dif_time) print('过去了%d年%d月%d天%d小时%d分钟%d秒'%(struct_time.tm_year-1970,struct_time.tm_mon-1, struct_time.tm_mday-1,struct_time.tm_hour, struct_time.tm_min,struct_time.tm_sec)) # 过去了0年0月1天2小时30分钟0秒