在 Python的内置模块中,提供了大量的日期和时间函数,通过这些函数可以帮助开发者快速实现日期和时间功能。在本节的内容中,将详细讲解使用 Python时间和日期函数的知识。
在 Python程序中,时间Time模块中的常用内置函数如下所示。
功能是返回格林威治西部的夏令时地区的的偏移秒数,如果该地区在格林威治东部会返回负值(如西欧,包括英国)。只有对夏令时启用地区才能使用此函数。例如下面在Python的交互式命令行程序中演示了函数altzone()的使用方法:
>>> import time
>>> print("time.altzone %d" % time.altzone)
time.altzone -32400
功能是接受时间元组并返回一个可读的形式如为“Wed Jul 27 20:23:46 2022” (2022年7月23日周三20时23分46秒)的24个字符的字符串(是我运行这些代码的日期和时间)。例如下面在Python的交互式命令行程序中演示了函数asctime()的使用方法:
>>> import time
>>> t= time . localtime()
>>> print ("time.asctime (t):%s " % time.asctime (t))
time.asctime (t):Wed Jul 27 20:23:46 2022
注意: time.clock()在Python3.3废弃,在Python3.8中将被移除,使用时注意自己的版本,可以用time.perf_counter()
以浮点数计算的秒数返回当前的 CPU时间,用来衡量不同程序的耗时,比 time.time()函数更有用。读者需要注意,函数 time.lock()在不同的操作系统中的含义不同。在UNIX系统中,它返回的是“进程时间”,是用秒表示的浮点数(时间戳)。当在Windows系统中第一次调用时,返回的是进程运行的实际时间。而在第二次之后调用的是自第一次调用以后到现在的运行时间。
在第一次调用函数time.clock()的时候,返回的是程序运行的实际时间。第二次之后的调用,返回的是自第一次调用后,到这次调用的时间间隔。在 Win32系统下,这个函数返回的是真实时间(wall time),而在 Unix/Linux下返回的是 CPU 时间。
例如在下面的实例中,在Pycharm中演示了使用函数time.perf_counter()实现时间处理的过程。
import time
def procedure():
time.sleep (2.5)
#time.clock
t0 = time.perf_counter()
procedure()
print (time.perf_counter() - t0)
# time.time
t0 = time.time()
procedure()
print (time.time() -t0)
在不同机器的执行效果不同,在我电脑中执行后会输出:
其功能相当于asctime(localtime(secs))函数,如果没有参数则相当于asctime()函数。例如下面在Python的交互式命令行程序中演示了函数time.ctime()的使用方法:
>>> import time
>>> print("time.ctime() : %s" %time.ctime())
time.ctime() : Wed Jul 27 20:46:41 2022
接收时间戳并返回格林威治天时间下的时间元组t。读者需要注意,t.tm_isdst始终为0。例如下面在Python的交互式命令行程序中演示了函数gmtime()的使用方法:
>>> import time
>>> print("gmtime:", time.gmtime(1455508609.34375))
gmtime: time.struct_time(tm_year=2016, tm_mon=2, tm_mday=15, tm_hour=3, tm_min=56, tm_sec=49, tm_wday=0, tm_yday=46, tm_isdst=0)
接收时间戳并返回当地时间下的时间元组t (t.tm _isdst可以取0或1,取决于当地当时是不是夏令时)。例如下面在Python的交互式命令行程序中演示了函数localtime()的使用方法:
>>> import time
>>> print("localtime():",time.localtime (1455508609.34375))
localtime(): time.struct_time(tm_year=2016, tm_mon=2, tm_mday=15, tm_hour=11, tm_min=56, tm_sec=49, tm_wday=0, tm_yday=46, tm_isdst=0)
接受时间元组并返回时间戳,函数mktime(tupletime)执行与 gmtime(), localtime()相反的操作,能够接收struct_time对象作为参数,返回用秒数来表示时间的浮点数。如果输入的值不是一个合法的时间,将会触发OverflowError 或 ValueError错误。参数tupletim是结构化的时间或者完整的9位元组元素。例如在下面的实例中,在Pycharm中演示了演示了使用函数mktime(tupletime)实现时间操作的过程:
import time
t = (2022,7,27,20,59,40,1,48,0)
secs = time.mktime(t)
print("time.mktime(t): %f" %secs)
print("asctime(localtime(secs)): %s" % time.asctime(time.localtime(secs)))
执行后会输出:
功能是推迟调用线程的运行,参数secs指秒数。例如下面在在Pycharm中演示了函数time.sleep(secs)的使
使用方法:
import time
print("Start :%s" %time.ctime)
time.sleep(5)
print("End: %s" %time.ctime())
执行后会输出:
接收时间元组,并返回以可读字符串表示的当地时间,格式由fmt决定。例如下面在Python的交互式命令行程序中演示了strftime()函数的使用方法:
>>> import time
>>> print(time.strftime("%Y-%m-%d %H:%M:%S",time.localtime()))
2022-07-27 21:17:41
根据fmt的格式把一个时间字符申解析为时间元组。例如下面在Python的交互式命令行程序中演示了strptime()函数的使用方法:
>>> import time
>>> struat_time = time.strptime("27 Jul 22","%d %b %y")
>>> print("返回元组:",struat_time)
返回元组: time.struct_time(tm_year=2022, tm_mon=7, tm_mday=27, tm_hour=0, tm_min=0, tm_sec=0, tm_wday=2, tm_yday=208, tm_isdst=-1)
返回当前时间的时间戳。例如下面在Python的交互式命令行程序中演示了time()函数的使用方法:
>>> import time
>>> print(time.time())
1658928614.7110431