隨著Python成為越來越受歡迎的編程語言之一,字元串轉datetime也成為了Python方便易用的特性之一。這篇文章將會向你展示如何通過Python將字元串轉換為datetime,並介紹datetime庫中的各種技巧和函數。如果你是一個Python愛好者或正在尋找一種可以將字元串轉換為datetime的編程語言,那麼這篇文章將會對你有所幫助。
一、預備知識
在了解如何將字元串轉換為datetime之前,我們需要先了解datetime和strptime的相關知識。datetime是一個Python模塊,它允許我們處理日期和時間。strptime是datetime模塊中的函數之一,它可以將一個字元串轉換為datetime類型的日期/時間。
另外需要注意的是,datetime是有格式的,這就意味著你需要了解一些日期和時間的格式化知識。Python datetime模塊的datetime類定義了一個strftime()方法,它允許我們將datetime格式化為指定的日期/時間格式。
二、使用datetime.strptime()轉換字元串為datetime
Python通過datetime模塊的strptime函數可以將一個字元串轉換為datetime類型。需要指明原字元串的格式(format),並且strptime()將會返回一個代表相應時間的datetime對象。
import datetime
date_string = '2022-07-18'
date_obj = datetime.datetime.strptime(date_string, '%Y-%m-%d')
print(date_obj)
# output: 2022-07-18 00:00:00
在上述例子中,我們使用datetime模塊中的strptime函數,將日期字元串「2022-07-18」轉換為datetime類型,`%Y-%m-%d`是日期的格式。
三、使用dateutil.parser.parse()轉換字元串為datetime
Python第三方庫dateutil也提供了另一種字元串轉datetime的方式,可以更加靈活地處理多種日期及時間格式。dateutil.parser.parse()會根據輸入自動推斷日期時間格式,比較智能易用。
import dateutil.parser
date_string = '2022-07-18 09:00:00'
date_obj = dateutil.parser.parse(date_string)
print(date_obj)
# output: 2022-07-18 09:00:00
四、datetime的format()方法
使用strptime()函數可以將字元串轉換為datetime類型,但是通常我們也會需要將datetime類型轉換為字元串格式輸出。這個時候,我們可以使用datetime自帶的format()方法。
import datetime
date_obj = datetime.datetime.now()
date_formatted = date_obj.strftime("%d-%b-%Y (%H:%M:%S.%f)")
print(date_formatted)
# output: 22-Jul-2022 (11:15:04.123456)
上述例子中,我們使用datetime自帶的format()方法,通過傳入具有指定格式的字元串來將時間轉換為特定格式的字元串。
五、將字元串轉換為UTC時間
在處理日期時間時,經常需要考慮時區問題。我們可以使用Python的pytz庫來處理時區問題。通過此庫可以輕鬆地將本地時間轉換為UTC時間。
import datetime
import pytz
date_string = '2022-07-18 09:00:00'
local_time = datetime.datetime.strptime(date_string, '%Y-%m-%d %H:%M:%S')
local_tz = pytz.timezone('Asia/Shanghai')
local_time = local_tz.localize(local_time)
utc_time = local_time.astimezone(pytz.utc)
print(utc_time)
# output: 2022-07-18 01:00:00+00:00
六、總結
在Python中將字元串轉換為datetime類型可能是非常困難的,但是使用datetime模塊中的strptime函數和format()方法,以及第三方庫dateutil可以使任務變得簡單。除此之外,我們還可以使用pytz庫來輕鬆處理時區問題。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/279826.html