模块的意义

time是用来处理Python程序中和时间相关的需求。

模块的实现原理

我也不知道耶,但是time这个模块不太一样,不在sys.path的那些目录里,是用C语言实现的,相当于内嵌在解释器里,不会被项目文件夹里的time.py覆盖。

常使用的功能时间的表示;

时间相关的功能。

时间的表示

在Python中,通常有这几种方式来表示时间:

1)时间戳 (Timestamp)

2)格式化的时间字符串 (Formatstring)

3)元组(struct_time)共九个元素。

由于Python的time模块实现主要调用C库,所以各个平台可能有所不同。

import time
# 时间戳
print(time.time()) # 输出1970年1月1日0点到现在的秒数
# 结构化时间
# 当地时间
print(time.localtime())
print(time.localtime().tm_year)
print(time.localtime().tm_wday) # 周一至周日对应0~6
# localtime的实际过程是将一个时间戳转化成结构化时间,默认输入是当前时间戳
print(time.localtime(time.time()))
print(time.localtime(1515151515))
# gmtime是将一个时间戳转化成格林尼治的结构化时间
print(time.gmtime()) # 格林尼治时间
# 字符串类型时间
# 将结构化时间转化为字符串时间
t = time.localtime()
print(time.strftime('%Y-%m-%d---%X---%y-%a-%b---%H-%M-%S',t))
'''%Y:年份,如2018;%m:月份,如8;%d:日期,如22;%X:时间包括时分秒,如16:01:24;%y:年份简写,如18;%a:周几;%b:月份的英文简写,如Aug;%H:24小时制的小时;%M:分钟;%S:秒钟'''
# 将结构化时间转化为时间戳
print(time.mktime(time.localtime()))
# 将字符串时间转化为结构化时间
print(time.strptime('2018-09-01','%Y-%m-%d'))
print(time.strptime('2018-09-01 23:43:54','%Y-%m-%d%X'))
print(time.strptime('2018-09-01 23:43','%Y-%m-%d%H:%M'))
#print(time.strptime('2018-09-01 23:43','%Y-%m-%d %X')) # 失败
'''---------------------------------------------------------------------------ValueError Traceback (most recent call last) in ()29 print(time.strptime('2018-09-01 23:43:54','%Y-%m-%d%X'))30 print(time.strptime('2018-09-01 23:43','%Y-%m-%d%H:%M'))---> 31 print(time.strptime('2018-09-01 23:43','%Y-%m-%d%X'))E:\Anaconda3.5\lib\_strptime.py in _strptime_time(data_string, format)557 """Return a time struct based on the input string and the558 format string."""--> 559 tt = _strptime(data_string, format)[0]560 return time.struct_time(tt[:time._STRUCT_TM_ITEMS])561E:\Anaconda3.5\lib\_strptime.py in _strptime(data_string, format)360 if not found:361 raise ValueError("time data%rdoes not match format%r" %--> 362 (data_string, format))363 if len(data_string) != found.end():364 raise ValueError("unconverted data remains:%s" %ValueError: time data '2018-09-01 23:43' does not match format '%Y-%m-%d%X''''
# 将结构化时间转化为默认的字符串时间
print(time.asctime(time.localtime()))
# 将时间戳转化为默认的字符串时间
print(time.ctime(time.time()))

功能性操作

time.sleep(secs):线程推迟指定的时间运行。单位为秒。

time.clock():这个需要注意,在不同的系统上含义不同。在UNIX系统上,它返回的是“进程时间”,它是用秒表示的浮点数(时间戳)。而在WINDOWS中,第一次调用,返回的是进程运行的实际时间。而第二次之后的调用是自第一次调用以后到现在的运行时间。(实际上是以WIN32上QueryPerformanceCounter()为基础,它比毫秒表示更为精确)

import time

print('第一次',time.clock())

time.sleep(1)

print('第二次',time.clock())

time.sleep(1)

print('第三次',time.clock())

第一次 33.60725343930766

第二次 34.607359358899096

第三次 35.60745706766948