time模块
一、表示时间的三种方式:
在python中,通常由三种方式来表示时间:时间戳、元组(struct_time)、格式化的时间字符串。
1、时间戳(timestamp):时间戳表示的是从1970年1月1日00:00:00开始按秒计算的偏移量。我们运行的type(time.time()),返回的是float类型。
import time time_stamp = time.time() print(time_stamp) #是一个float类型的数 #结果:1534750537.7957218
2、格式化的时间字符串(Format String):如:'1990-02-18'
import time Formatting_time1 = time.strftime("%Y-%m-%d %X") print(Formatting_time1) # 结果:2018-08-20 15:39:38 Formatting_time2 = time.strftime("%Y-%m-%d %H:%M:%S") print(Formatting_time2) # 结果:2018-08-20 15:39:38
3、元组(struct_time):struct_time元组共有9个元素(年、月、日、时、分、秒、一年中的第几周,一年中的第几天等)
| 索引(Index) | 属性(Attribute) | 值(Values) |
| 0 | tm_year(年) | 如:2016 |
| 1 | tm_mon(月) | 1-12 |
| 2 | tm_mday(日) | 1-31 |
| 3 | tm_hour(时) | 0-23 |
| 4 | tm_min(分) | 0-59 |
| 5 | tm_sec(秒) | 0-59 |
| 6 | tm_wday(weekday) | 0-6(0表示周一) |
| 7 | tm_yday(一年中的第几天) | 1-365 |
| 8 | tm_isdst(是否时夏令时) | 默认为0 |
#时间元组的localtime()方法将一个时间戳转换为当前时区的struct_time import time # print(time.localtime()) struct_time = time.localtime() print(struct_time) # 结果:time.struct_time(tm_year=2018, tm_mon=8, tm_mday=20, tm_hour=15, tm_min=48, tm_sec=31, tm_wday=0, tm_yday=232, tm_isdst=0)
@小结:时间戳时计算机能够识别的时间;时间字符串时人能够看懂的时间;元组是用来操作时间的
二、三种格式之间的转换:

import time # 时间戳-->结构化时间 # time.gmtime(时间戳) #UTC时间,与英国伦敦当地时间一致 # time.localtime(时间戳) #当地时间,例如现在在北京执行这个方法,与UTC时间相差8小时(UTC时间+8小时)=北京时间 struct_time1 = time.gmtime(1500000000) print(struct_time1) #伦敦时间 struct_time2 = time.localtime(1500000000) print(struct_time2) #当地时间(北京) # 结构化时间-->时间戳 # time.mktime(结构化时间) time_tuple = time.localtime(1500000000) print(time.mktime(time_tuple)) # 结果:1500000000.0 # 结构化时间-->字符串时间 # time.strftime("格式定义","结构化时间") #结构化时间参数若不传,则显示当前时间 Formatting_time1 = time.strftime("%Y-%m-%d %X") print(Formatting_time1) #结果:2018-08-20 16:11:53 如果不传结构化时间参数显示当前时间 Formatting_time2 = time.strftime("%Y-%m-%d %X",time.localtime(1500000000)) print(Formatting_time2) # 结果:2017-07-14 10:40:00 # 字符串时间-->结构化时间 # time.strptime(时间字符串,字符串对应格式) struct_time1 = time.strptime("2018-01-01","%Y-%m-%d") print(struct_time1) struct_time2 = time.strptime("05/20/2017","%m/%d/%Y") print(struct_time2)

import time # 结构化时间-->%a %b %d %H:%M:%S %Y串 # time.asctime(结构化时间) #如果不传参数,直接返回当前的格式化串 t1 = time.asctime(time.localtime(1500000000)) print(t1) # 结果:Fri Jul 14 10:40:00 2017 t2 = time.asctime() print(t2) # 结果:Mon Aug 20 16:27:30 2018 #时间戳-->%a %b %d %H:%M:%S %Y串 # time.ctime(时间戳) #如果不传参数,直接返回当前时间格式化串 t1 = time.ctime() print(t1) # 结果:Mon Aug 20 16:31:47 2018 #如果不传参数,直接返回当前时间格式化串 t2 = time.ctime(1500000000) print(t2) # 结果:Fri Jul 14 10:40:00 2017
@结算时间差:
import time start_time = time.mktime(time.strptime('2017-09-11 08:30:00','%Y-%m-%d %H:%M:%S')) #把字符串时间转化成结构化时间,在把结构化时间转化成时间戳 end_time = time.mktime(time.strptime('2017-09-12 11:00:00','%Y-%m-%d %H:%M:%S')) #把字符串时间转化成结构化时间,在把结构化时间转化成时间戳 dif_time =end_time - start_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秒 print(struct_time) # 结果:time.struct_time(tm_year=1970, tm_mon=1, tm_mday=2, tm_hour=2, tm_min=30, tm_sec=0, tm_wday=4, tm_yday=2, tm_isdst=0)
浙公网安备 33010602011771号