在接下來的教程中,我們將通過一些例子來理解 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 之後的任何日期來修復這個無效參數錯誤。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/235941.html