Python中如何将时间戳转换为DateTime

导航至

在您的开发旅程中,您可能遇到过在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中时间戳和日期时间的区别是什么?

时间戳可以比作历史时间线上的数值坐标。它们作为数字代表特定的时间点,通常是自称为“纪元”的参考点以来的秒数(有时是毫秒数)。将时间戳视为时间的数学基础。

例如,想象一下您想在1995年标记互联网时代的开始。在时间戳术语中,这个关键时刻由1970年和1995年之间的秒数来量化。

epoch_timestamp = 0 internet_era_timestamp = 1995 - 1970

时间戳是精确计算的强大工具,非常适合测量时间间隔、比较事件和处理复杂的时间操作。

Difference Between Timestamp and Datetime in Python

相比之下,日期时间是捕捉一个时刻本质的快照,以人类可读的格式呈现。它们巧妙地封装了年份、月份、日和其他时间元素,创建了一个全面的时间表示。日期时间是时间的人类视觉表达,使它们对我们人类来说直观易懂且易于操作。

例如,考虑一个假设的生日: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()函数为我们提供了轻松执行此转换的方法。正如我们在前面的示例中所看到的,让我们分解每个步骤,以了解如何执行转换。

  1. 导入所需的模块 在我们继续之前,请确保你有datetime模块可用。
    from datetime import datetime
  2. 获取时间戳 准备好你想要转换的时间戳。这可能是来自数据集、API响应或任何其他来源。
    timestamp = 1629788400 # Replace with your timestamp
  3. 转换为日期时间 使用fromtimestamp()函数将时间戳转换为日期时间对象。
    dt_object = datetime.fromtimestamp(timestamp)
  4. 显示结果 最后,根据需要打印或操作转换后的日期时间对象。
    print("Converted Datetime:", dt_object)
    现在你已经成功在Python中将时间戳转换为日期时间对象了!

如何在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 开发者,擅长前端工程。他在印度与多个初创公司合作,并在教育技术和医疗保健行业的产品构建方面拥有经验。Siddhant 对教学和写作充满热情。他还教授了许多毕业生的编程,帮助他们成为更优秀的未来开发者。您可以在以下链接找到更多关于 Siddhant 的信息:Siddhant