Python epoch 到 Datetime

2025年3月17日 | 阅读 10 分钟

在下面的教程中,我们将通过一些示例了解如何在 Python 编程语言中将 epoch 时间转换为 DateTime。我们将使用 Python epoch 来分别将 epoch 转换为日期和时间。我们还将涵盖以下主题:

  1. 将 DateTime 转换为 epoch 时间
  2. 将 epoch 转换为 DateTime 字符串
  3. 将 epoch 转换为 DateTime 毫秒
  4. 将 epoch 转换为 DateTime 时区
  5. 将 Unix epoch 转换为 DateTime
  6. 将 DateTime 转换为毫秒级 epoch 时间
  7. 将 epoch 时间戳转换为 DateTime
  8. Python epoch DateTime 年份超出范围

但在我们开始之前,让我们简要了解一下 Python 中的 epoch 时间。

Python 中的 epoch 时间是什么?

Epoch 时间,也称为 Unix 时间或 POSIX 时间,是一种将时间视为自 Unix 时代(1970 年 1 月 1 日 12:00 PM UTC)以来经过的秒数的时间框架。此框架广泛用于计算系统和编程语言,包括 Python。

在 Python 中,我们可以使用 time 模块处理时代时间,该模块提供用于操作时间相关值的功能。管理时代时间的基本功能之一是 time.time(),它以浮点数形式返回自时代以来的当前时间(秒)。

使用 Python 将 epoch 时间转换为 DateTime

我们可以使用 Python 的 datetime.fromtimestamp() 函数将 epoch 时间转换为 DateTime。让我们考虑以下示例,演示 Python epoch 到 DateTime 的转换。

示例

输出

Given epoch time: 40246871
Converted Datetime: 1971-04-12 01:11:11

说明

在上面的示例中,导入了 datetime 模块,从而允许控制日期和时间值。然后将变量 epoch_time 分配特定值 40246871,表示自 Unix 时代(1970 年 1 月 1 日 00:00:00 UTC)以来经过的秒数。

脚本的核心功能在于使用 datetime.fromtimestamp() 函数。此函数需要时间(epoch_time)并将其转换为更易读的配置,通过创建一个 datetime 对象。由此产生的 datetime 对象,表示相同的日期和时间,存储在变量 date_time 中。

为了使转换可见,脚本包含两个 print() 语句。第一个 print("给定的时代时间:", epoch_time) 显示原始时代时间值,而第二个 print("转换后的日期时间:", date_time) 输出转换后的 datetime 值。

使用 Python 将 DateTime 转换为 epoch 时间

为了将 DateTime 转换为 epoch 时间,我们将使用 timestamp() 函数。首先,让我们考虑以下示例,说明 DateTime 到 epoch 时间的转换。

示例

输出

Converted epoch time: 1623184200.0

说明

在上面的示例中,导入了 datetime 模块,用于处理日期和时间相关的活动。该脚本演示了使用 timestamp() 函数将特定 datetime 转换为 epoch 时间。

该过程首先创建一个 datetime 对象,表示 2021 年 6 月 9 日凌晨 2:00。然后将此 datetime 对象作为参数传递给 timestamp() 函数,该函数返回相同的 epoch 时间(自 Unix 时代,即 1970 年 1 月 1 日 00:00:00 UTC 以来经过的秒数)。结果 epoch 时间存储在变量 epoch_time 中。

脚本以 print() 语句结束:print("转换后的时代时间:", epoch_time),该语句输出指定 datetime 的计算时代时间。使用 Python 将 epoch 时间转换为 DateTime 字符串 为了将 epoch 时间转换为 datetime 字符串,我们需要将 epoch 时间转换为 datetime,然后将结果 datetime 变量传递给 strftime() 函数,以成功将其转换为 datetime 字符串。

示例

输出

Given epoch time: 700024
Converted datetime string: 1970 - 01 - 09  07 : 57 : 04

说明

在上面的示例中,我们再次导入了 datetime 库。然后我们使用了 datetime.fromtimestamp() 函数将给定的 epoch 时间转换为 datetime,然后将其传递给 strftime() 函数将 datetime 对象转换为 datetime 字符串。strftime() 函数的参数是我们希望自定义字符串的格式代码。

  1. %Y 表示年份
  2. %m 表示月份
  3. %d 表示日期
  4. %H 表示小时
  5. %M 表示分钟
  6. %S 表示秒

使用 Python 将 epoch 时间转换为 DateTime 毫秒

我们可以使用将 epoch 时间转换为 DateTime 的方法,从 epoch 时间获取包含毫秒的 DateTime。让我们考虑以下示例来演示。

示例

输出

Given epoch time: 402471.238201
Converted Datetime: 1970-01-05 21:17:51.238201

说明

在上面的示例中,导入了 datetime 模块以处理日期和时间相关的活动。该脚本的基本目的是将给定的时代时间(指定为 402471.238201 秒)使用 datetime 对象和结构化字符串转换为可读配置。

脚本返回使用 datetime.fromtimestamp() 功能将时代时间转换为 datetime 对象。结果 datetime 对象,存储在变量 date_time 中,封装了相应的日期和时间详细信息。最后,脚本打印原始时代时间和转换后的 datetime 对象。

这些 print() 语句生成显示原始时代时间和结构化 datetime 对象的输出,清晰地表示了原始时间戳及其人类友好的等效物。

使用 Python 将 epoch 时间转换为 DateTime 时区

我们可以使用 pytz 包的 timezone() 函数将 epoch 时间转换为 DateTime 时区。让我们考虑以下示例,演示相同的转换。

示例

输出

DateTime Time zone: 2021-06-10 09:34:32-05:00

说明

在上面的示例中,datetime 模块与 pytz 模块一起使用,以在特定时区处理日期和时间对象。脚本的主要目标是创建一个 datetime 对象,并明确将其时间点设置为“CST6CDT”(中心标准时间,带夏令时),然后打印结果日期和时间。

因此,pytz 模块中的 timezone() 功能用于创建表示“CST6CDT”的时区对象。然后,时区对象中的 restrict() 功能用于为特定 datetime 对象(2021 年 6 月 10 日,9:34:32)设置时间点。

is_dst=None 参数表示未明确提供夏令时 (DST) 信息,允许 restrict() 函数根据指定时间确定适当的 DST 状态。最后,脚本打印带有明确设置时区的结果 datetime 对象。

使用 Python 将 Unix epoch 时间转换为 DateTime

将 Unix epoch 时间转换为 DateTime 的过程与我们之前所做的类似。此过程涉及 datetime.fromtimestamp() 函数将 Unix epoch 时间转换为 DateTime 对象,并使用 strftime() 函数将对象转换为合适的 DateTime 格式。

让我们看下面的例子来演示这一点。

示例

输出

Unix epoch time: 252384207
DateTime: 1977 - 12 - 31  08 : 13 : 27

说明

在上面的示例中,datetime 模块用于将给定的时代时间(指定为 252384207 秒)转换为更易读的配置。主要目标是从时代时间创建 datetime 对象,然后将其格式化为字符串以供显示。脚本首先导入 datetime 模块。然后使用 datetime.fromtimestamp() 功能将时代时间转换为 datetime 对象。

结果 datetime 对象,存储在变量 datetime_obj 中,封装了相应的日期和时间详细信息。然后,使用 strftime() 功能将 datetime 对象格式化为具有特定配置的字符串。在这种情况下,指定的配置是“%Y - %m - %d %H : %M : %S”,表示年、月、日、小时、分钟和秒。

最后,脚本打印原始 Unix 时代时间和结构化 datetime 字符串。这些 print() 语句生成显示原始时代时间和结构化 datetime 字符串的输出,清晰地表示了原始时间戳及其人类友好的等效物。

使用 Python 将 DateTime 转换为毫秒级 epoch 时间

为了将 epoch DateTime 转换为毫秒,我们可以使用 strptime() 函数从指定的字符串返回 datetime 对象,并使用 timestamp() 函数将对象转换为秒。此外,我们需要将结果值乘以一千,以生成毫秒级的 epoch DateTime。

让我们考虑一个演示相同内容的示例。

示例

输出

epoch time in milliseconds: 1623301415720.0

说明

在上面的示例中,datetime 模块用于将表示特定日期和时间的格式化字符串转换为以毫秒为单位的时代时间值。该过程始于使用 strptime() 功能,该功能根据提供的格式“%d-%m-%Y %H:%M:%S,%f”解析输入字符串“10-6-2021 10:33:35,72”。此格式指定输入字符串的日期、月份、年份、小时、分钟、秒和微秒部分。

结果 datetime 对象,存储在变量 dt_obj 中,封装了已解析的日期和时间信息。因此,脚本通过使用 datetime 对象的 timestamp() 方法计算时代时间,该方法表示自 Unix 时代(1970 年 1 月 1 日 00:00:00 UTC)以来经过的秒数。将此值乘以 1000 即可将其转换为毫秒,从而提供更精细的时间表示。

最后,脚本使用 print() 语句打印计算出的毫秒级时代时间。

使用 Python 将 epoch 时间戳转换为 DateTime

我们可以使用 datetime.fromtimestamp() 函数将 epoch 时间戳转换为 DateTime。下面是一个示例。

示例

输出

epoch timestamp: 33456871
DateTime: 1971-01-23 11:04:31

说明

在上面的示例中,datetime 模块用于将给定的时代时间戳(表示为 33456871 秒)转换为更合理和可理解的格式。脚本首先导入 datetime 模块,从而可以访问处理日期和时间的各种功能。

时代时间戳,表示自 Unix 时代(1970 年 1 月 1 日 00:00:00 UTC)以来经过的秒数,在脚本中分配给变量 epoch_time。因此,使用 datetime.fromtimestamp() 功能将此时代时间戳转换为名为 the_datetime 的 datetime 对象。

脚本最后使用 print() 语句打印原始时代时间戳和结构化 datetime 对象。

了解 Python 中 epoch datetime 相关的错误

在 Python 编程语言中使用 epoch datetime 时,我们可能会遇到“Python epoch datetime 年份超出范围”或“Python 无效参数”的错误。

让我们考虑一个示例来理解这个问题。

示例

输出

Traceback (most recent call last):
  File "D:\Python\epochpython.py", line 5, in 
    epoch_time = datetime.datetime(1960, 6, 10, 0, 0).timestamp()
OSError: [Errno 22] Invalid argument

说明

在上面的示例中,datetime 模块用于将特定的日期时间(本例中为 '1960-06-10 00:00:00')使用 timestamp() 功能转换为时代时间。脚本首先导入 datetime 模块,从而可以访问与日期和时间操作相关的功能。

脚本的核心功能在于使用 timestamp() 功能,该功能应用于表示 1960 年 6 月 10 日午夜的 datetime 对象。此功能计算并返回时代时间,表示自 Unix 时代(1970 年 1 月 1 日 00:00:00 UTC)到指定 datetime 之间经过的秒数。

然后使用 print() 语句打印结果,生成可能看起来像“- 306691200.0”的输出。


下一个主题Python del 语句