模块的意义
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