Python epoch转换为Datetime

Python epoch转换为Datetime

在以下教程中,我们将通过一些示例了解如何在Python编程语言中将epoch转换为Datetime。我们将使用Python的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时间,也被称为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() 函数的参数是我们想要自定义字符串的格式代码。

  1. %Y 代表年份
  2. %m 代表月份
  3. %d 代表日期
  4. %H 代表小时
  5. %M 代表分钟
  6. %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 之后的任何日期来修复这个 无效参数 错误。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程