在 Python 中转换 Epoch 到 Datetime
本教程将介绍如何在 Python 中把 Unix epoch 秒数转换为 datetime 格式。
Epoch/纪元是一个术语,指的是自纪元日期–1970 年 1 月 1 日以来所经过的秒数。1970 年是 UNIX 操作系统的发布日期。Epoch 时间也被称为 UNIX 时间戳。
例如,2020 年 11 月 25 日(00:00:00)的纪元是 1606262400
,这是自 1970 年 1 月 1 日到该日的秒数。
在 Python 中使用 time
模块将纪元转换为日期时间
Python time
模块提供了方便的时间相关函数。该函数为 UNIX 时间戳相关的计算提供了很多支持。
例如,函数 time.localtime()
接受 epoch 秒作为参数,并生成一个由 9 个时间序列组成的时间值序列。
让我们在这个例子中使用一个随机的纪元时间。
import time
epoch_time = 1554723620
time_val = time.localtime(epoch_time)
print("Date in time_struct:", time_val)
输出:
Date in time_struct: time.struct_time(tm_year=2019, tm_mon=4, tm_mday=8, tm_hour=19, tm_min=40, tm_sec=20, tm_wday=0, tm_yday=98, tm_isdst=0)
localtime()
输出一个元组 struct_time()
,其中包含了纪元时间的详细信息,包括确切的年、月、日和其他纪元时间的详细信息。
time
模块有另一个函数 time.strftime()
来将元组转换为日期时间格式。
该函数接受 2 个参数,第一个参数是包含指定转换格式的字符串,第二个参数是 struct_time()
元组。
现在,将上面相同的纪元时间例子转换为可读的日期时间格式。
import time
epoch_time = 1554723620
time_formatted = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime(epoch_time))
print("Formatted Date:", time_formatted)
输出:
Formatted Date: 2019-04-08 19:40:20
除了这种格式,另一种通用的日期格式是月份的全称,包括星期几。让我们试一试。
import time
epoch_time = 1554723620
time_formatted = time.strftime("%A, %B %-d, %Y %H:%M:%S", time.localtime(epoch_time))
print("Formatted Date:", time_formatted)
Formatted Date: Monday, April 8, 2019 19:40:20
strftime()
中另一种只需要一个字符的有用格式是%c
,它是 Locale 的通用日期和时间表示法。
time_formatted = time.strftime("%c", time.localtime(epoch_time))
print("Formatted Date:", time_formatted)
输出:
Formatted Date: Mon Apr 8 19:40:20 2019
在 Python 中使用 datetime
模块把 Epoch 转换为 Datetime
datetime
是 Python 中另一个支持时间相关函数的模块。不同的是,time
模块专注于 Unix 时间戳,而 datetime
支持广泛的日期和时间函数,同时仍然支持 time
模块的许多操作。
datetime
有一个函数 fromtimestamp()
,它接受 epoch 秒和 datetime
对象。
让我们尝试一下这个模块的不同的纪元秒的例子。
datetime
是有意重复两次的。在 datetime
模块中,有一个 datetime
对象,其函数为 fromtimestamp()
。date
和 time
也是 datetime
模块中的对象。import datetime
epoch_time = 561219765
time_val = datetime.datetime.fromtimestamp(epoch_time)
print("Date:", time_val)
如果 datetime.datetime
是专门在 datetime
模块中使用的对象,那么就从模块中导入它,以避免代码显得多余。
from datetime import datetime
输出:
Date: 1987-10-14 22:22:45
为了将 datetime 转换为另一种格式,datetime()
还有一个实用函数 strftime()
,它提供了与 time.strftime()
相同的功能。
import datetime
epoch_time = 561219765
time_formatted = datetime.datetime.fromtimestamp(epoch_time).strftime(
"%A, %B %-d, %Y %H:%M:%S"
)
print("Formatted Date:", time_formatted)
输出:
Formatted Date: Wednesday, October 14, 1987 22:22:45
综上所述,这就是 Python 中把 epoch 转换为 datetime 格式的两种主要方法。time
和 datetime
模块都提供了可以方便地用于日期时间转换的函数。
这两个模块都有函数 strftime()
,这是一种方便的格式化日期的方法。
这里有一个参考文献,可以熟悉 Python 中的日期时间格式,以便能够使用 strftime()
自定义日期格式。
Skilled in Python, Java, Spring Boot, AngularJS, and Agile Methodologies. Strong engineering professional with a passion for development and always seeking opportunities for personal and career growth. A Technical Writer writing about comprehensive how-to articles, environment set-ups, and technical walkthroughs. Specializes in writing Python, Java, Spring, and SQL articles.
LinkedIn