如何使用 Python 的时间模块

Python 的 time 模块提供了多种与时间相关的功能,并且在使用 Python 构建后端时通常很方便。使用此库,您可以以标准格式获取当前时间和日期。您可以在代码中计算时间差并安排特定于时间的操作。

通过实际示例,让我们带您了解使用时间库的一些最有用的方法。

时间库入门

time模块是 Python 的多功能库存储库中最有趣的宝藏之一。它内置于 Python 中,因此您无需单独安装它。您只需要将它导入到您的代码中即可开始使用它。

尽管 Python 的时间库有很多方法,而且乍一看可能让人不知所措,但我们将重点介绍您可能最常使用的方法。

要开始使用time模块,请使用以下语句将其导入脚本:

 import time

获取默认纪元

默认情况下,时间库的纪元签名在 Unix 系统上从 1970 年的第一天和第一个小时开始。不过,这取决于平台。因此,纪元或开始时间和日期可能会有所不同,具体取决于您使用的操作系统。

要查看操作系统上的默认纪元:

 import time
default_base = time.gmtime(0)
print(default_base)

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)

上面的元组输出(类型为time.struct_time的对象)包含时间模块的时间结构。默认情况下,它是库存储日期和时间详细信息的地方。从结果来看, tm_year可以追溯到 1970 年,其他一些属性的默认值为零。顺便说一下, gmtime返回格林威治标准时间,它可能与您当地的时区不同。

您可以使用time.localtime()来获取本地纪元:

 import time
default_base = time.localtime(0)
print(default_base)

运行上述代码可能会更改各个属性的值,具体取决于您当地的时区。例如,在英国夏令时, tm_hour将是“1”而不是 GMT 的“0”。

相关:如何运行 Python 脚本

查看当前时间和日期详细信息

要以time.struct_time对象的形式获取当前时间,请不带任何参数调用time.gmtime()

 import time
current_time = time.gmtime()
print(current_time)

time.struct_time(tm_year=2021, tm_mon=10, tm_mday=2,
tm_hour=11, tm_min=13, tm_sec=18, tm_wday=5,
tm_yday=275, tm_isdst=0)

正如您在前面的示例中所做的那样,将time.gmtime()替换为time.localtime()以查看您当前的本地时间。

计算 Epoch 和当前时间之间的时间

使用time.time()函数查看当前时间和纪元之间的秒数:

 import time
print("Time difference in seconds:", time.time())

Time difference in seconds: 1633178361.142249

查看年差:

 import time

# Calculate the number of years:
print("Year difference is approximately:", round(time.time() / (3600 * 365 * 24)), "years")

Year difference is approximately: 52 years

提取当前本地时间

在实践中通常不需要,但您可以通过直接访问time.struct_time对象的属性来访问它的每个值。

例如,要从当前本地时间获取当前的小时、分钟和年:

 import time

current_local_time = time.localtime()

hours = current_local_time.tm_hour
mins = current_local_time.tm_min
year = current_local_time.tm_year

print(("The local time and year detail are: {}th hour, {}mins, and year {}").format(hours, mins, year))

The local time and year detail are: 11th hour, 49mins, and year 2021

要自动输出而不是像我们上面那样硬编码,您可以使用time.ctime()函数输出当前本地时间。

以下是使用time.ctime()查看当前本地时间的方法:

 import time
print(time.ctime())

Sat Oct 2 13:58:07 2021

但是上面的选项不能让你对输出进行任何控制。

要操作输出,您可以使用带有字符串注释的time.strftime()对时间格式进行字符串化:

 import time
current_local_time = time.localtime()

# Get the current local time:
current_local_time = time.localtime()

# Stringify the current local time using string annotations:
dtime = time.strftime("The date and time is: %a, %d-%b-%Y, %I:%M %p", current_local_time)

print(dtime)

The date and time is: Sat, 02-Oct-2021, 11:57 AM

在上面的代码中, %a表示缩写的当前日期名称。 %p在您的语言环境中代表上午或下午。在英语中,这可以转换为AMPM

相关: Python String format() 方法如何工作?

您可以在空闲时间查看Python 文档strftime() 的所有可能的字符串注释。随意调整它们,根据您的特定要求格式化时间。您可以通过向上述示例添加更多字符串选项并查看它们输出的内容来进行试验。例如,您可以用%H替换%I以获得当前时间的 24 小时格式。

使用 Python 的时间模块安排代码

您可以使用time.sleep()函数延迟代码执行。当您需要使用 Python 安排请求或运行多线程程序时,此功能会很有帮助。

让我们看看它是如何工作的:

 import time
time.sleep(3)
print("This post will show after 3 seconds")

请注意, time.sleep()仅接受浮点数和整数参数,将其转换为秒。因此,如果您要安排下一小时或一分钟,则需要将这些转换为秒。

将输出延迟一个小时,例如:

 time.sleep(3600)
print("This post will show after an hour")

使用 time.sleep() 创建倒数计时器

使用time.sleep()函数和Python 的 for loop ,让我们创建一个接受用户输入的倒数计时器:

 import time
print("Start counting seconds from:")

# Create a timer input field that accepts an integer
timer = int(input())

# Increment the timer so that it starts at the specified input
timer = range(timer + 1)

# Assign the length of the timer to a new variable =>
# Then remove one from timer's length to match its index

v = len(timer) - 1

for i in timer:
# Increment the time every one second
time.sleep(1)

# Concatenate the previous count with the next count
# to prevent new line at each iteration
print(timer[v], end = " ", flush=True)
print("", end = "", flush=True)

# Decrease the length of timer input by one for each iteration
v -= 1

当你运行上面的代码并设置你的时间值时,它会每秒减少指定的值,直到它达到零。

正确使用 Python 的时间库

您现在知道如何从 Python 代码访问当前时间并操作时间和日期输出。当您使用 Python 进行后端编程时,时间模块也是跟踪服务器端请求的重要工具。

由于输出大多是整数或浮点数,您可以根据需要对它们进行操作,以小时、天、月或年为单位。