Python时间模块
在本文中,我们将借助好的示例来讨论时间模块和该模块提供的各种功能。
顾名思义, Python时间模块允许在Python中使用时间。它允许诸如获取当前时间、暂停程序执行等功能。因此,在开始使用此模块之前,我们需要导入它。
导入时间模块
time 模块带有 Python 的标准实用程序模块,因此无需外部安装。我们可以使用 import 语句简单地导入它。
import time
什么是时代?
纪元是时间开始的点并且取决于平台。在 Windows 和大多数 Unix 系统上,纪元是 1970 年 1 月 1 日 00:00:00 (UTC),并且闰秒不计入纪元以来的秒数。要检查给定平台上的纪元,我们可以使用 time.gmtime(0)。
示例:获取纪元
Python3
import time
print(time.gmtime(0))
Python3
import time
curr = time.time()
print("Current time in seconds since epoch =", curr)
Python3
import time
# getting current time by passing
# the number of seconds since epoch
curr = time.ctime(1627908313.717886)
print("Current time:", curr)
Python3
import time
for i in range(4):
# using sleep() to hault execution
time.sleep(1)
print(i)
Python3
# importing time module
import time
# Convert the current time in seconds
# since the epoch to a
# time.struct_time object in Local time
obj = time.localtime(1627987508.6496193)
print(obj)
Python3
# importing time module
import time
obj1 = time.gmtime(1627987508.6496193)
# Convert the time.struct_time
# object to local time expressed in
# seconds since the epoch
# using time.mktime() method
time_sec = time.mktime(obj1)
# Print the local time in seconds
print("Local time (in seconds):", time_sec)
Python3
# importing time module
import time
# Convert the current time in seconds
# since the epoch to a
# time.struct_time object in UTC
obj = time.gmtime(1627987508.6496193)
# Print the time.struct.time object
print(obj)
Python3
from time import gmtime, strftime
# using simple format of showing time
s = strftime("%a, %d %b %Y %H:%M:%S",
gmtime(1627987508.6496193))
print(s)
Python3
# importing time module
import time
obj = time.gmtime(1627987508.6496193)
# Convert the time.struct_time
# object to a string of the
# form 'Day Mon Date Hour:Min:Sec Year'
# using time.asctime() method
time_str = time.asctime(obj)
print(time_str)
obj = time.localtime(1627987508.6496193)
# Convert the time.struct_time
# object to a string of the
# form 'Day Mon Date Hour:Min:Sec Year'
# using time.asctime() method
time_str = time.asctime(obj)
print(time_str)
Python3
import time
string = "Tue, 03 Aug 2021 10:45:08"
obj = time.strptime(string, "%a, %d %b %Y %H:%M:%S")
print(obj)
输出:
time.struct_time(tm_year=1970, tm_mon=1, tm_mday=1, tm_hour=0, tm_min=0, tm_sec=0, tm_wday=3, tm_yday=1, tm_isdst=0)
从上面的示例中,您可以看到纪元是 1970 年 1 月 1 日。这意味着 1970 年 1 月 2 日可以表示为纪元以来的 86400 秒,因为一天有 86400 秒。
注意:纪元之前的时间仍然可以用秒表示,但它会是负数。例如,1969 年 12 月 31 日将表示为 -86400 秒。
自纪元以来以秒为单位获取当前时间
time.time() 方法返回自纪元以来的当前时间(以秒为单位)。它返回一个浮点数。
示例:自纪元以来的当前时间(以秒为单位)
Python3
import time
curr = time.time()
print("Current time in seconds since epoch =", curr)
Current time in seconds since epoch = 1627908387.764925
从秒中获取时间字符串
time.ctime()函数返回一个 24 个字符的时间字符串,但以秒为参数并计算时间,直到提到的秒数。如果没有传递参数,则计算到现在为止的时间。
示例:从秒获取时间字符串
Python3
import time
# getting current time by passing
# the number of seconds since epoch
curr = time.ctime(1627908313.717886)
print("Current time:", curr)
Current time: Mon Aug 2 12:45:13 2021
延迟执行程序
可以使用 time.sleep() 方法延迟执行。此方法用于在参数中指定的时间内停止程序执行。
示例:延迟Python中程序的执行时间。
Python3
import time
for i in range(4):
# using sleep() to hault execution
time.sleep(1)
print(i)
0
1
2
3
time.struct_time 类
Struct_time 类有助于访问本地时间,即非纪元时间戳。它返回一个命名元组,其值可以通过索引和属性名称访问。它的对象包含以下属性——Index Attribute Name Values 0 tm_year 0000, …, 9999 1 tm_mon 1, 2, …, 11, 12 2 tm_mday 1, 2, …, 30, 31 3 tm_hour 0, 1, …, 22, 23 4 tm_min 0, 1, …, 58, 59 5 tm_sec 0, 1, …, 60, 61 6 tm_wday 0, 1, …, 6; Sunday is 6 7 tm_yday 1, 2, …, 365, 366 8 tm_isdst 0, 1 or -1
此类包含各种功能。让我们详细讨论每个函数。
time.localtime() 方法
localtime() 方法以本地时间返回 struct_time 对象。它将自纪元以来经过的秒数作为参数。如果未给出 seconds 参数,则使用 time.time() 方法返回的当前时间。
示例:从纪元获取本地时间
Python3
# importing time module
import time
# Convert the current time in seconds
# since the epoch to a
# time.struct_time object in Local time
obj = time.localtime(1627987508.6496193)
print(obj)
输出
time.struct_time(tm_year=2021, tm_mon=8, tm_mday=3, tm_hour=16, tm_min=15, tm_sec=8, tm_wday=1, tm_yday=215, tm_isdst=0)
time.mktime() 方法
time.mktime() 是 time.localtime() 的反函数,它将自纪元以来以秒表示的时间转换为本地时间的 time.struct_time 对象。
示例:将 struct_time 对象转换为自纪元以来的秒数
Python3
# importing time module
import time
obj1 = time.gmtime(1627987508.6496193)
# Convert the time.struct_time
# object to local time expressed in
# seconds since the epoch
# using time.mktime() method
time_sec = time.mktime(obj1)
# Print the local time in seconds
print("Local time (in seconds):", time_sec)
Local time (in seconds): 1627987508.0
time.gmtime() 方法
time.gmtime() 用于将自纪元以来以秒表示的时间转换为 UTC 中的 time.struct_time 对象,其中 tm_isdst 属性始终为 0。如果未给出 seconds 参数,则 time.time( ) 方法被使用。
示例:使用 time.gmtime() 方法
Python3
# importing time module
import time
# Convert the current time in seconds
# since the epoch to a
# time.struct_time object in UTC
obj = time.gmtime(1627987508.6496193)
# Print the time.struct.time object
print(obj)
输出
time.struct_time(tm_year=2021, tm_mon=8, tm_mday=3, tm_hour=10, tm_min=45, tm_sec=8, tm_wday=1, tm_yday=215, tm_isdst=0)
time.strftime() 方法
time.strftime()函数将表示由 gmtime() 或 localtime() 返回的时间的元组或 struct_time 转换为格式参数指定的字符串。如果未提供 t,则使用 localtime() 返回的当前时间。格式必须是字符串。如果 t 中的任何字段超出允许范围,则会引发 ValueError。
示例:使用 strftime() 方法将 struct_time 对象转换为字符串
Python3
from time import gmtime, strftime
# using simple format of showing time
s = strftime("%a, %d %b %Y %H:%M:%S",
gmtime(1627987508.6496193))
print(s)
Tue, 03 Aug 2021 10:45:08
time.asctime() 方法
time.asctime() 方法用于将表示 time.gmtime() 或 time.localtime() 方法返回的时间的元组或 time.struct_time 对象转换为以下形式的字符串:
Day Mon Date Hour:Min:Sec Year
示例:将元组转换为 time.struct_time 对象为字符串
Python3
# importing time module
import time
obj = time.gmtime(1627987508.6496193)
# Convert the time.struct_time
# object to a string of the
# form 'Day Mon Date Hour:Min:Sec Year'
# using time.asctime() method
time_str = time.asctime(obj)
print(time_str)
obj = time.localtime(1627987508.6496193)
# Convert the time.struct_time
# object to a string of the
# form 'Day Mon Date Hour:Min:Sec Year'
# using time.asctime() method
time_str = time.asctime(obj)
print(time_str)
Tue Aug 3 10:45:08 2021
Tue Aug 3 10:45:08 2021
time.strptime() 方法
time.strptime() 方法将表示时间的字符串转换为 struct_time 对象。
示例:将字符串转换为 struct_time 对象。
Python3
import time
string = "Tue, 03 Aug 2021 10:45:08"
obj = time.strptime(string, "%a, %d %b %Y %H:%M:%S")
print(obj)
输出
time.struct_time(tm_year=2021, tm_mon=8, tm_mday=3, tm_hour=10, tm_min=45, tm_sec=8, tm_wday=1, tm_yday=215, tm_isdst=-1)