如何在 Python 中将时间戳转换为日期时间
作者:社区 / 开发者
2023 年 6 月 28 日
导航至
在您的开发者旅程中的某个时刻,您可能已经遇到过在 Python 中处理日期和时间戳的情况。 务必理解围绕处理日期和时间数据的概念,以便您可以按照您想要的方式操作这些数据类型。
让我们探讨一下 Python 中的时间戳和日期时间是什么,并学习如何将时间戳转换为日期时间对象。
理解 Python 中的时间戳和日期时间
首先,让我们概述一下 Python 中的时间戳和日期时间是什么。
Python 中的时间戳
时间戳是特定时间点的数字表示。它通常表示为自特定参考点(称为“纪元”)以来经过的秒数(或有时为毫秒数)。在 Python 中,纪元通常定义为 1970 年 1 月 1 日。
您可能想知道,当我们已经有日期时间时,为什么还需要时间戳。 嗯,时间戳提供了一种标准化的时间表示方式,它独立于时区和人类可读的格式。 这使得执行计算、比较以及其他涉及时间的操作变得更容易。
Python 提供了几种处理时间戳的方法。 一个流行的模块是 time,它提供了像 time() 这样的函数来获取当前时间戳。
让我们看看如何使用 time 模块 来打印当前时间戳。
import time
current_timestamp = time.time()
print("Current Timestamp:", current_timestamp)
当您运行上面的代码时,您应该看到从 1970 年 1 月 1 日的纪元开始的当前时间戳,如下所示
Current Timestamp: 1693137418.480114
Python 中的日期时间
日期时间是 Python 中的一种数据类型,用于同时表示日期和时间。 Python 有一个内置的 datetime 模块,它提供了用于处理日期时间的类和函数。 日期时间存储关于年、月、日、小时、分钟、秒甚至微秒的信息。
让我们看一个简单的例子来理解它的语法
from datetime import datetime
current_datetime = datetime.now()
print("Current Datetime:", current_datetime)
上面的代码将在屏幕上打印当前的日期时间,如下所示
Current Datetime: 2023-08-27 17:43:41.666569
Python 中时间戳和日期时间之间有什么区别?
时间戳可以比作历史时间线上的数字坐标。 它们将时间中的特定时刻表示为数字,通常计算自称为纪元(通常设置为 1970 年 1 月 1 日)的参考点以来经过的秒数(或有时为毫秒数)。 将时间戳视为时间的数学基础。
例如,假设您想标记 1995 年互联网时代的黎明。 用时间戳术语来说,这个关键时刻是通过 1970 年到 1995 年之间的秒数来量化的。
epoch_timestamp = 0 internet_era_timestamp = 1995 - 1970
时间戳是用于精确计算的强大工具,非常适合测量时间间隔、比较事件和处理复杂的时间操作。
相比之下,日期时间就像快照,以人类可读的格式捕捉时刻的本质。 它们优雅地封装了年、月、日和其他时间元素,创建了时间的全面表示。 日期时间是时间的视觉表达,使我们人类能够直观地理解和使用。
例如,考虑一个假设的生日:1995 年 1 月 15 日。 用日期时间术语来说,这是一个包含年、月和日的整体描绘。
from datetime import datetime
birthday_datetime = datetime(year=1995, month=1, day=15)
在需要向用户传达时间信息的场景中,日期时间会大放异彩。 它们非常适合日历、活动日程安排以及需要人性化交互的界面。
本质上,时间戳在幕后表现出色,精确计算在那里占据主导地位,而日期时间则向前一步,与人类优雅地互动,以相关的方式将时间带入生活。 将时间戳和日期时间结合使用,您将拥有一个通用的工具包,用于掌握编程旅程中的时间维度。
Python 时间戳和日期时间的常见操作
在各种场景中您可以使用 Python 时间戳和日期时间。 例如,您可以将它们用于诸如测量时间间隔、计算执行时间等操作。 让我们通过一些易于理解的示例来看一下其中一些用例和场景。
测量执行时间
您可以使用时间戳来测量您的代码执行需要多长时间。 为了做到这一点,您可以在代码运行或执行之前首先创建一个开始时间戳。 然后,您可以运行一些同步代码片段。
这是它的通用语法
import time
start_time = time.time()
# Your code here
end_time = time.time()
execution_time = end_time - start_time
print("Execution Time:", execution_time, "seconds")
让我们用一个简单的例子来尝试一下
import time
start_time = time.time()
for x in range(1000000000):
if(x==99999999):
print('Loop over!')
end_time = time.time()
execution_time = end_time - start_time
print("Execution Time:", execution_time, "seconds")
在上面的代码中,我们运行一个长循环并在循环退出之前打印一条消息。 由于循环运行大量迭代,此代码会消耗一些时间来执行。 在我的机器上,上面的代码需要 30 秒才能执行
Loop over!
Execution Time: 30.553071975708008 seconds
通过这种方式,您可以评估任何可能运行缓慢的代码片段的执行时间,这可能表明它是数据密集型的,或者正在执行昂贵且耗时的计算或操作。
将时间戳转换为日期时间
时间戳可以转换为人类可读的 日期时间对象。 当您想向用户呈现时间信息时,这尤其有用。 让我们看一个简单的例子,其中我们使用 datetime 模块的 fromtimestamp() 方法将当前时间戳转换为人类可读的日期。
from datetime import datetime
import time
timestamp = time.time()
date_object = datetime.fromtimestamp(timestamp)
print("Datetime:", date_object)
上面的代码应该打印以下输出
Datetime: 2023-08-27 17:48:18.683378
让我们在下一节中进一步探讨这个用例。
在 Python 中将时间戳转换为日期时间
当处理与时间相关的数据时,将时间戳转换为日期时间对象是一项常见的任务。 Python 的 datetime 模块通过 fromtimestamp() 函数来救援,这使我们能够轻松地执行此转换。 正如我们在上一节的示例中已经看到的那样,让我们分解每个步骤以了解如何执行转换。
- 导入所需的模块 在继续之前,请确保您已安装 datetime 模块。
from datetime import datetime
- 获取时间戳 准备好您要转换的时间戳。 这可能来自数据集、API 响应或任何其他来源。
timestamp = 1629788400 # Replace with your timestamp
- 转换为日期时间 使用 fromtimestamp() 函数将时间戳转换为日期时间对象。
dt_object = datetime.fromtimestamp(timestamp)
- 显示结果 最后,根据需要打印或操作转换后的日期时间对象。
现在您已成功地在 Python 中将时间戳转换为日期时间对象!print("Converted Datetime:", dt_object)
如何在 Python Pandas 中将时间戳转换为日期时间
虽然本教程主要关注使用 Python 的 datetime 模块进行时间戳转换,但您可能想知道关于 pandas 的信息。 在 pandas 中,您可以使用 pd.to_datetime() 函数实现类似的转换。 但是,原理仍然非常相似。 如果您正在寻找 pandas 特定的示例,请查看 pandas 文档。
处理时区和微秒
当处理时间戳和日期时间时,考虑时区和微秒精度非常重要。
时区
时区在日期和时间的世界中起着至关重要的作用,理解它们对于准确和有意义的时间计算至关重要。 让我们深入研究一下时区是什么以及它们是如何工作的。
之前,我们接触过使用 fromtimestamp() 函数将时间戳转换为日期时间。 虽然此函数默认提供系统本地时区的日期和时间,但在处理来自不同来源的数据时,您可能需要考虑不同的时区。
Python 的 datetime 模块允许您使用 pytz 库来处理时区。 这是一个将时间戳转换为具有特定时区的日期时间的快速示例
from datetime import datetime
import pytz
timestamp = 1629788400
timezone = pytz.timezone('America/New_York')
dt_object = datetime.fromtimestamp(timestamp, tz=timezone)
print("Datetime with Timezone:", dt_object)
在下面的输出中,您可以看到时区在时间之后指定
Datetime with Timezone: 2021-08-24 03:00:00-04:00
使用时区可以在很多用例中帮助您——例如,如果您正在构建一个连接来自世界各地的用户的平台。 您在纽约的用户在当地时间下午 3:00 安排了一个活动,而东京的另一位用户也做了同样的事情。 作为平台所有者,您必须确保两个用户都看到正确的活动时间,同时考虑到纽约和东京之间的时差。 它还有助于在您的应用程序中向用户显示本地化时间,以便每个用户都以自己的时区查看日期和时间,而不会造成任何混淆。
微秒
如果您的时间戳包含毫秒或微秒,您可以在转换期间保留该精度。 只需确保您的时间戳以秒或毫秒(而不是微秒)为单位,因为 fromtimestamp() 期望值以秒为单位。
这是一个例子
timestamp_with_micros = 1629788400.123456 # Example timestamp with microseconds
dt_object_with_micros = datetime.fromtimestamp(timestamp_with_micros)
print("Datetime with Microseconds:", dt_object_with_micros)
它打印以下输出
Datetime with Microseconds: 2021-08-24 12:30:00.123456
如何在 Python 中将浮点时间戳转换为日期时间
时间戳通常表示为浮点数,尤其是在需要微秒精度时。 将浮点时间戳转换为日期时间的过程与本教程中演示的相同。 只需使用 fromtimestamp() 函数,Python 就会轻松处理转换。
结论
在本教程中,我们探讨了 Python 中时间戳和日期时间的概念。 我们学习了时间戳如何表示时间点,以及如何使用 time 模块来处理它们。 我们还讨论了用于处理人类可读日期时间的 datetime 模块。
本教程的主要重点是演示使用 fromtimestamp() 函数将时间戳转换为日期时间对象的过程。 我们逐步介绍了此转换所需的步骤,并在整个过程中提供了示例。 此外,我们还介绍了处理时区和微秒精度,以涵盖您可能遇到的各种场景。
无论您是测量执行时间、分析时间数据还是只是向用户呈现信息,将时间戳转换为日期时间的能力都是您 Python 工具箱中的基本工具。 当您继续您的 Python 之旅时,请记住时间戳和日期时间是重要的组成部分,它们使您能够有效地处理时间数据。
这篇文章由 Siddhant Varma 撰写。 Siddhant 是一位全栈 JavaScript 开发者,精通前端工程。 他曾与印度的多家初创公司合作进行扩展,并在 Ed-Tech 和医疗保健行业拥有构建产品的经验。 Siddhant 对教学充满热情,并且擅长写作。 他还向许多毕业生教授编程,帮助他们成为更好的未来开发者。