表示方式有三种
时间戳 给机器看的 float格式
格式化的字符传 给人看的 格式化时间
元祖 计算用的 结构化时间
1 # 时间戳时间
2 # 返回一个时间戳,表示从1970.1.1日到现在的秒数
3 print(time.time()) # 1541402524.8415277
4
5 # 字符串时间
6 # 字母表示是固定的,但是格式不固定随便你改
7 print(time.strftime("%Y-%m-%d %H:%M:%S")) # 2018-11-05 15:17:25
8 print(time.strftime("%Y/%m/%d %a %H:%M:%S")) # 2018/11/05 Mon 15:17:25
9 print(time.strftime("%H:%M:%S")) # 15:17:25
10
11 # 结构化时间
12 struct_time = time.localtime()
13 # time.struct_time(tm_year=2018, tm_mon=11, tm_mday=5, tm_hour=15, tm_min=17, tm_sec=25, tm_wday=0, tm_yday=309, tm_isdst=0)
14 print(struct_time)
15 print(struct_time.tm_year) #
时间转换
时间戳不能和结构化时间直接转化
只能通过格式化时间进行中介
时间戳 --------localtime/gmtime-----> 结构化时间
时间戳 <---------mktime-------------- 结构化时间
# 时间戳时间转换成格式化时间
t = time.time()
print(t)
# 转换确定的时间戳可以用 localtime 转换
print(time.localtime(3000000000))
# 转换动态赋值的 变量时间戳用 gmtime 转换
print(time.gmtime(t))
# 格式化时间转换成 时间戳时间 用mktime 转换
print(time.mktime(time.localtime()))
字符串时间 -----------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()) # Mon Nov 5 15:33:30 2018
print(time.asctime(time.localtime(1500000000))) # Fri Jul 14 10:40:00 2017
print(time.ctime()) # Mon Nov 5 15:33:30 2018
print(time.ctime(1500000000)) # Fri Jul 14 10:40:00 2017
ps:
计算时间差小插件~
# # 计算时间差
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.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))