Python中的时间库是什么?一份有用的指南

导航到

作为一名开发者,你经常会面临处理与时间相关操作的任务,无论是显示当前时间、操作本地时间、计算两个日期之间的时间差等。Python自带了一个时间库,开发者可以使用它来处理时间相关的操作,例如处理时间戳、测量时间间隔以及以各种方式操作时间。在本指南中,我们将探讨时间库的基础知识、关键函数以及实际应用案例。

Python中的时间库是什么?

Python的时间库是一个模块,提供了各种与时间相关操作的功能。它是Python标准库的一部分。这意味着你可以简单地导入这个模块并开始使用它,无需安装任何额外的模块。你可以使用时间库来执行任何涉及日期和时间计算的任务,如调度操作、测量代码执行时间等。

探索时间库:常见函数

让我们通过一些示例来了解一下时间库中最常用的函数。

1. time()

你可以使用time()函数来返回当前时间(以秒为单位)。它测量自纪元开始的时间,一个预定义的时间点,通常回溯到1970年1月1日00:00:00(UTC)。要返回当前时间,只需在时间模块中调用time()函数。以下是如何输出当前时间的示例:

import time
current_time = time.time()
print("Current time in seconds since the epoch:", current_time)

上面的代码应输出以下所示当前时间(以秒为单位)

Current time in seconds since the epoch: 1694622847.212096

2. ctime()

很多时候,你需要以更易读的格式显示时间。你可以使用ctime()函数来返回一个表示当前本地时间的字符串,格式易读。它告诉你星期几,然后是日期、时间和年份。以下是如何输出当前时间的示例:

import time
current_local_time = time.ctime()
print("Current local time:", current_local_time)

上面的代码应以下所示输出可读格式的当前时间

Current local time: Wed Sep 13 22:05:11 2023

3. gmtime()

当你编写的代码将在世界各地的不同地区运行时,你需要以一致的格式表示时间。为了在不同的地区和时区之间保持一致和准确的时间参考,开发者经常使用称为UTC(协调世界时)的格式表示时间。它是一个作为全球时间基准的时间标准。

你可以使用gmtime()函数来返回一个表示当前UTC时间的元组。该元组包含以下属性:

  • tm_year
  • tm_mon
  • tm_mday
  • tm_hour
  • tm_min
  • tm_sec
  • tm_wday
  • tm_yday
  • tm_isdst
  • tm_zone
  • tm_gmtoff

请看以下示例

import time
current_utc_time = time.gmtime()
print("Current UTC time:", current_utc_time)

它生成以下输出

Current UTC time: time.struct_time(tm_year=2023, tm_mon=9, tm_mday=13, tm_hour=16, tm_min=45, tm_sec=5, tm_wday=2, tm_yday=256, tm_isdst=0)

如你所见,tm_mon表示年份的月份,tm_mday表示日期,tm_hour表示小时等,都是以UTC格式表示的。

4. asctime()

之前你看到,gmtime函数提供了UTC时间,但它只返回一个时间元组。对于最终用户来说,元组或struct_time没有用。你可以使用asctime()函数将时间元组或struct_time转换为易读格式的字符串。让我们使用之前的示例以易读格式显示UTC时间。

import time
current_time_tuple = time.gmtime()
current_time_string = time.asctime(current_time_tuple)
print("Current UTC time as a string:", current_time_string)

如果运行上述代码,你应该得到相同的人可读格式UTC时间

Current UTC time as a string: Wed Sep 13 17:27:31 2023

5. mktime()

您可以使用mktime()函数将时间元组转换为自纪元以来的秒数。例如,如果您有下面所示的时间元组,可以使用以下代码将其转换为秒:

import time
time_tuple = (2023, 9, 9, 12, 0, 0, 0, 0, 0)
epoch_time = time.mktime(time_tuple)
print("Epoch time:", epoch_time)

这将给出从转换后的元组中得到的纪元时间(以秒为单位)

Epoch time: 1694241000.0

6. sleep()

有时您需要延迟执行一些代码指定的时间。在API中添加延迟是添加速率限制的常见用例,以确保它们不超过允许的请求速率。例如,如果一个API允许每分钟一百次请求,您可以在每次请求之间添加延迟以保持在此限制内。您还可以在多线程或多进程应用程序中使用延迟在并发任务之间引入延迟。这可以帮助防止资源过载或竞争问题。

在这种情况下,您可以使用sleep()函数延迟执行某些代码指定的时间。下面是一个简单的示例,该示例在执行代码时打印“开始”,在两秒后打印“结束”

import time
print("Start")
time.sleep(2)  # Sleep for 2 seconds
print("End")

(图片)

7. strftime()

您还可以使用strftime函数将时间元组或struct_time转换为基于特定格式的字符串。考虑以下示例。在这里,我们将使用strftime函数显示当前UTC时间,其中时间按年、月、日和时间显示。

import time
current_time_tuple = time.gmtime()
formatted_time = time.strftime("%Y-%m-%d %H:%M:%S", current_time_tuple)
print("Formatted UTC time:", formatted_time)

上面的代码应显示以下指定的格式的时间元组

Formatted UTC time: 2023-09-14 05:08:48

8. strptime()

您甚至可以进行之前的反向操作。如果您有一个要将日期和时间字符串转换为时间元组,可以使用strptime()函数,该函数解析表示日期和时间的字符串并返回时间元组。然后,您可以使用时间元组从时间中提取特定的天、年、月等,或进行任何其他操作。

import time
time_string = "2023-09-09 12:00:00"
time_tuple = time.strptime(time_string, "%Y-%m-%d %H:%M:%S")
print("Parsed time tuple:", time_tuple)

Python时间库的一般用例

现在您已经对一些常见的时间函数有了基本的了解,让我们来看看一些流行的用例。

日期和时间计算

您可以使用mktime函数计算两个时间元组之间的时间差(以秒为单位),如下所示:

import time
start_time = time.mktime((2023, 9, 1, 0, 0, 0, 0, 0, 0))
end_time = time.mktime((2023, 9, 9, 0, 0, 0, 0, 0, 0))
time_difference = end_time - start_time
print("Time difference in seconds:", time_difference)

当您运行上面的代码时,您将在控制台上看到输出时间差,这代表了两个时间元组之间的秒数差异。

Time difference in seconds: 691200.0

计算时间差可以在许多地方使用,尤其是在显示关于何时完成操作的信息时。例如,您可以计算当前时间与用户更新信息的时间之间的时间差,并使用该差异来传达信息最后更新的时间。

带时间戳的数据记录

在物联网和其他电子应用中,您可能需要在记录数据时添加时间戳,例如传感器或其他硬件(如温度、湿度等)的信息。您可以使用strftime1函数以人可读的格式输出本地时间并将其与传感器数据一起记录。

以下是一个示例:

import time

def log_sensor_data(sensor_value):
    current_time = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())
    print(f"{current_time}: Sensor value: {sensor_value}")

# Simulate sensor data
for i in range(1, 6):
    sensor_data = i * 10
    log_sensor_data(sensor_data)

以下是上述代码的运行和显示的记录传感器数据及其时间戳的方式:

2023-09-14 10:51:53: Sensor value: 10
2023-09-14 10:51:53: Sensor value: 20
2023-09-14 10:51:53: Sensor value: 30
2023-09-14 10:51:53: Sensor value: 40
2023-09-14 10:51:53: Sensor value: 50

代码性能分析和基准测试

您可以使用timefunction生成两个时间,一个标记某些代码执行的开始,另一个标记结束。然后,您可以通过计算这两个时间之间的差异来确定代码块执行所需的时间。

import time

def expensive_function():
    time.sleep(2)

start_time = time.time()
expensive_function()
end_time = time.time()
execution_time = end_time - start_time
print("Execution time:", execution_time, "seconds")

注意我们如何使用sleep函数引入显式的延迟来模拟昂贵的函数执行。上述代码应给出两秒的执行时间。

Execution time: 2.0070152282714844 seconds

常见问题解答

如何在Python中获取时间库?

时间库是Python标准库的一部分,因此您不需要单独安装它。您只需使用 import time 语句即可导入它。

Python中的import time是什么意思?

import time 是Python中用来导入时间库的语句,使其函数和类可用于您的代码中。

Python中的time()函数是如何工作的?

Python中的 time() 函数返回自纪元开始以来的当前时间(以秒为单位)。它允许您测量时间间隔、基准测试代码以及在您的程序中跟踪与时间相关的数据。

本文由Siddhant Varma撰写。Siddhant是一位全栈JavaScript开发者,精通前端工程。他曾在印度为多家初创公司进行过规模扩展,并在教育科技和医疗保健行业中构建产品。Siddhant热爱教学,擅长写作。他还教授编程课程给许多毕业生,帮助他们成为更优秀的未来开发者。