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)

 

posted @ 2018-08-20 14:51  LW-5208  阅读(114)  评论(0)    收藏  举报