Python epoch转换为Datetime
在以下教程中,我们将通过一些示例了解如何在Python编程语言中将epoch转换为Datetime。我们将使用Python的epoch来分别转换为日期和时间。我们还将涵盖以下主题:
- 将DateTime转换为epoch时间
- 将epoch转换为DateTime字符串
- 将epoch转换为DateTime毫秒
- 将epoch转换为DateTime时区
- 将Unix epoch转换为DateTime
- 将DateTime转换为毫秒级epoch时间
- 将epoch时间戳转换为DateTime
- Python epoch DateTime年份超出范围
但在开始之前,让我们简要了解一下Python中的epoch时间。
Python中的epoch时间是什么
epoch时间,也被称为POSIX时间、Unix时间和Unix时间戳,表示从1970年1月1日以来经过的秒数(不包括闰秒)。Unix时间包含十位数字,并可以同时表示所有的时区。
使用Python将epoch时间转换为Datetime
我们可以使用Python的 datetime.fromtimestamp() 函数来将epoch时间转换为Datetime。让我们来看下面的示例,演示了将Python的epoch转换为Datetime的过程。
示例:
# 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 库。然后,我们定义了一个变量,存储以秒为单位的纪元时间的值。然后,我们使用 datetime.fromtimestamp() 函数将纪元时间转换为DateTime;然后将输出打印给用户。结果,提供的变量成功转换为DateTime。
使用Python将DateTime转换为纪元时间
为了将DateTime转换为纪元时间,我们将使用 timestamp() 函数。首先,让我们考虑以下示例,说明将DateTime转换为纪元时间的过程。
示例:
# 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包。然后,我们定义了一个变量,该变量存储通过给定的日期时间使用timestamp()函数计算出的纪元时间的值,并将计算出的值打印给用户。因此,给定的日期时间已成功转换为纪元时间。
使用Python将纪元时间转换为DateTime字符串
为了将纪元时间转换为日期时间字符串,我们需要将纪元时间转换为日期时间,然后将结果日期时间变量传递给strftime()函数以成功将其转换为日期时间字符串。
示例:
# 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.fromtimestamp() 函数将给定的纪元时间转换为日期时间,并将其传递给 strftime() 函数将日期时间对象转换为日期时间字符串。 strftime() 函数的参数是我们想要自定义字符串的格式代码。
- %Y 代表年份
- %m 代表月份
- %d 代表日期
- %H 代表小时
- %M 代表分钟
- %S 代表秒
使用Python将时间戳转换为DateTime毫秒
我们可以通过与将时间戳转换为DateTime的方法相同的方法,从时间戳中获取带有毫秒的DateTime。让我们考虑以下示例,演示相同的过程。
示例:
# 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 包并定义了一个变量,存储了以十进制表示的Epoch时间。然后,我们使用 datetime.fromtimestamp() 函数将这个十进制值转换为毫秒格式的datetime格式。
使用Python将epoch时间转换为DateTime时区
我们可以使用 pytz 包的 timezone() 函数将epoch时间转换为DateTime时区。让我们考虑以下示例,演示了同样的转换。
示例:
# 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
解释:
在上面的示例中,我们从datetime包中导入datetime模块,同时也导入了pytz库。然后我们使用pytz库中的timezone()函数,指定参数为”CST6CDT”,该函数返回指定时区的当前日期。然后我们使用localize()函数来本地化结果。
使用Python将Unix纪元时间转换为DateTime
将Unix纪元时间转换为DateTime的过程与之前的类似。该过程使用datetime.fromtimestamp()函数将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.fromtimestamp()函数将Unix纪元时间转换为一个DateTime对象。然后我们使用strftime()函数将对象转换为适合的格式字符串并打印给用户。
使用Python将DateTime转换为以毫秒计的纪元时间
为了将纪元DateTime转换为毫秒,我们可以使用strptime()函数从指定的字符串返回datetime对象,并使用timestamp()函数将对象转换为秒。此外,我们需要将结果值乘以一千,以便产生以毫秒为单位的纪元DateTime。
让我们考虑一个示例来演示相同的功能。
示例:
# 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
解释:
在上面的示例中,我们从datetime库中导入了datetime模块。然后我们使用strptime()函数将DateTime字符串转换为DateTime对象。然后我们使用timestamp()函数将对象转换为epoch时间格式。最后,我们还将epoch时间乘以一千,以将其转换为毫秒。
使用Python将epoch时间戳转换为DateTime
我们可以使用datetime.fromtimestamp()函数将epoch时间戳转换为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库,定义了一个变量来存储epoch时间戳的值。然后我们使用datetime.fromtimestamp()函数将epoch时间戳转换为datetime并将其打印给用户。
理解Python中与epoch datetime相关的错误
在Python编程语言中使用epoch datetime时,我们可能会遇到一个错误,该错误提示Python epoch datetime年份超出范围或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 之后的任何日期来修复这个 无效参数 错误。