在接下来的教程中,我们将通过一些例子来理解 Python 编程语言中历元到日期时间的转换。我们将使用 Python epoch 分别将 epoch 转换为日期和时间。我们还将涵盖以下主题:
- 将日期时间转换为纪元时间
- 将纪元转换为日期时间字符串
- 将纪元转换为日期时间毫秒
- 将纪元转换为日期时间时区
- 将 Unix 纪元转换为日期时间
- 将日期时间转换为以毫秒为单位的纪元时间
- 将纪元时间戳转换为日期时间
- Python 纪元日期时间年份超出范围
但是在开始之前,让我们简单了解一下 Python 中的纪元时间。
Python 中的纪元时间是什么?
纪元时间,也称为 POSIX 时间、Unix 时间和 Unix 时间戳,表示自 1970 年 1 月 1 日以来经过的秒数,不包括闰秒。Unix 时间包含十位数字,可以同时代表所有时区。
使用 Python 将纪元时间转换为日期时间
我们可以使用 Pythondatetime . frontimestamp()函数将历元时间转换为 DateTime。让我们考虑以下示例,演示 Python 纪元到日期时间的转换。
示例:
# importing the datetime package
import datetime
# given epoch time
epoch_time = 40246871
# using the datetime.fromtimestamp() function
date_time = datetime.datetime.fromtimestamp( epoch_time )
# printing the value
print("Given epoch time:", epoch_time)
print("Converted Datetime:", date_time )
输出:
Given epoch time: 40246871
Converted Datetime: 1971-04-12 01:11:11
说明:
在上面的例子中,我们已经导入了日期时间库。然后我们定义了一个变量,以秒为单位存储纪元时间的值。然后,我们使用了DateTime . frontimestamp()函数,以便将纪元时间转换为 DateTime 然后为用户打印输出。因此,提供的变量被成功转换为日期时间。
使用 Python 将日期时间转换为纪元时间
为了将日期时间转换为历元时间,我们将使用时间戳()函数。首先,让我们考虑以下示例,该示例说明了日期时间到纪元时间的转换。
示例:
# importing the datetime package
import datetime
# using the timestamp() function to convert datetime into epoch time
epoch_time = datetime.datetime(2021, 6, 9, 2, 0).timestamp()
# printing the values
print("Converted epoch time:", epoch_time)
输出:
Converted epoch time: 1623184200.0
说明:
在上例中,我们再次导入了 datetime 包。然后,我们定义了一个存储纪元时间值的变量,该值是使用给定日期时间的时间戳()函数计算的,并为用户打印了计算值。因此,给定的日期时间已成功转换为纪元时间。
使用 Python 将纪元时间转换为日期时间字符串
为了将历元时间转换为 datetime 字符串,我们需要将历元时间转换为 datetime,然后将结果 datetime 变量传递给 strftime() 函数,将其成功转换为 datetime 字符串。
示例:
# importing the datetime package
import datetime
# given epoch time
epoch_time = 700024
# using datetime.fromtimestamp() function to convert epoch time into datetime object
mytimestamp = datetime.datetime.fromtimestamp( epoch_time )
# using strftime() function to convert
datetime_str = mytimestamp.strftime( "%Y - %m - %d %H : %M : %S")
# printing the values
print("Given epoch time:", epoch_time)
print("Converted datetime string:", datetime_str)
输出:
Given epoch time: 700024
Converted datetime string: 1970 - 01 - 09 07 : 57 : 04
说明:
在上面的例子中,我们再次导入了 datetime 库。然后,我们使用datetime . frontimestamp()函数将给定的纪元时间转换为 datetime,然后将其传递给 strftime() 函数,将 datetime 对象转换为 datetime 字符串。str time()函数参数是我们想要自定义字符串的格式代码。
- %Y 表示年份
- %m 表示月份
- %d 指定日期
- %H 表示一个小时
- %M 表示分钟
- %S 表示秒
使用 Python 将纪元时间转换为日期时间毫秒
我们可以使用将纪元时间转换为日期时间的方法,从纪元时间获得日期时间和毫秒。让我们考虑下面的例子来证明这一点。
示例:
# importing the datetime package
import datetime
# given epoch time
epoch_time = 402471.238201
# using the datetime.fromtimestamp() function
date_time = datetime.datetime.fromtimestamp( epoch_time )
# printing the value
print("Given epoch time:", epoch_time)
print("Converted Datetime:", date_time )
输出:
Given epoch time: 402471.238201
Converted Datetime: 1970-01-05 21:17:51.238201
说明:
在上面的例子中,我们已经导入了日期时间包,并定义了一个变量来存储以小数表示的纪元时间值。然后,我们使用datetime . frontimestamp()函数将这个十进制值转换为 datetime 毫秒格式。
使用 Python 将纪元时间转换为日期时间时区
我们可以使用 pytz 包的时区()功能,将纪元时间转换为日期时间时区。让我们考虑下面的例子,演示相同的转换。
示例:
# importing the required package(s) and module(s)
from datetime import datetime
import pytz
# using the timezone() function
my_timezone = pytz.timezone('CST6CDT')
# using the localize() function
date_timezone = my_timezone.localize( datetime( 2021, 6, 10, 9, 34, 32 ), is_dst = None )
# printing the values
print( "DateTime Time zone:", date_timezone )
输出:
DateTime Time zone: 2021-06-10 09:34:32-05:00
说明:
在上面的例子中,除了 pytz 库之外,我们还从 datetime 包中导入了 datetime 模块。然后,我们使用了 pytz 库的时区()功能,将参数指定为“CSt6CDT”。此函数返回指定时区的当前日期。然后我们使用 localize() 函数来定位结果。
使用 Python 将 Unix 纪元时间转换为日期时间
这个将 Unix 纪元时间转换为 DateTime 的过程类似于我们之前所做的。这个过程涉及到datetime . frontime stamp()函数将 Unix 纪元时间转换为 DateTime 对象,并使用 strftime() 函数将该对象转换为合适的 DateTime 格式。
让我们考虑下面的例子来证明这一点。
示例:
# importing the datetime library
import datetime
# given epoch time
epoch_time = 252384207
# using the datetime.fromtimestamp() function
datetime_obj = datetime.datetime.fromtimestamp( epoch_time )
# using the strftime() function
datetime_str = datetime_obj.strftime( "%Y - %m - %d %H : %M : %S" )
# printing the values
print( "Unix epoch time:", epoch_time )
print( "DateTime:", datetime_str )
输出:
Unix epoch time: 252384207
DateTime: 1977 - 12 - 31 08 : 13 : 27
说明:
在上面的例子中,我们再次导入了 datetime 库,并定义了一个包含 Unix 纪元时间值的变量。然后,我们使用datetime . frontimestamp()函数将 Unix 纪元时间转换为 DateTime 对象。然后,我们使用 strftime() 函数将对象转换为合适的格式字符串,并为用户打印出来。
使用 Python 将日期时间转换为以毫秒为单位的纪元时间
为了将纪元日期时间转换为毫秒,我们可以使用 strptime() 函数从指定的字符串返回日期时间对象,并使用 timestamp() 函数将对象转换为秒。此外,我们需要将结果值乘以一千,以产生以毫秒为单位的纪元日期时间。
让我们考虑一个例子来证明这一点。
示例:
# importing the datetime module
from datetime import datetime
# using the strptime() function
dt_obj = datetime.strptime( '10-6-2021 10:33:35,72', '%d-%m-%Y %H:%M:%S,%f')
epoch_msec = dt_obj.timestamp() * 1000
print("epoch time in milliseconds:", epoch_msec)
输出:
epoch time in milliseconds: 1623301415720.0
说明:
在上例中,我们从日期时间库中导入了日期时间模块。然后,我们使用 strptime() 函数将日期时间字符串转换为日期时间对象。然后,我们使用时间戳()函数将对象转换为纪元时间格式。最后,我们还将历元时间乘以一千,以便将其转换为毫秒。
使用 Python 将纪元时间戳转换为日期时间
我们可以使用datetime . frontimestamp()函数将历元时间戳转换为 DateTime。下面是一个例子:
示例:
# importing the datetime module
import datetime
# given epoch timestamp
epoch_time = 33456871
# using the datetime.fromtimestamp() function
the_datetime = datetime.datetime.fromtimestamp( epoch_time )
# printing the values
print( "epoch timestamp:", epoch_time )
print( "DateTime:", the_datetime )
输出:
epoch timestamp: 33456871
DateTime: 1971-01-23 11:04:31
说明:
在上面的例子中,我们已经导入了日期时间库,并定义了一个存储纪元时间戳值的变量。然后,我们使用datetime . frontimestamp()函数将纪元时间戳转换为 datetime,并为用户打印出来。
理解 Python 中与纪元日期时间相关的错误
在 Python 编程语言中使用纪元日期时间时,我们可能会遇到一个错误,说 Python 纪元日期时间年份超出范围或 Python 无效参数。
让我们考虑一个例子来理解这个问题。
示例:
# importing the datetime module
import datetime
# using the timestamp() function
epoch_time = datetime.datetime(1960, 6, 10, 0, 0).timestamp()
# printing the values
print( epoch_time )
输出:
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
说明:
在上面的例子中,我们提供了日期时间,年份 1960 ,在年份 1970 之前,不在时间戳范围内。因此,程序将返回一个错误作为无效参数。
我们可以通过将 1950 的日期替换为 1970 之后的任何日期来修复这个无效参数错误。