Python中的datetime模塊為我們提供了處理日期和時間的類和函數。在實際編程中,我們會經常需要將日期和時間進行格式化以適合我們的使用場景。在本文中,我們將從多個方面對Python datetime的格式化進行詳細的闡述。
一、日期和時間的創建
import datetime # 獲取當前日期和時間 now = datetime.datetime.now() # 根據時間戳創建日期和時間 timestamp = 1624692362 dt = datetime.datetime.fromtimestamp(timestamp) # 根據字元串創建日期和時間 date_str = '2022-06-26 12:30:00' dt2 = datetime.datetime.strptime(date_str, '%Y-%m-%d %H:%M:%S')
我們可以通過datetime.now()獲取當前的日期和時間,也可以根據時間戳或者字元串來創建日期和時間。其中,strftime()函數和strptime()函數將在後文中詳細講解。
二、日期和時間的格式化
1. strftime()函數
strftime()函數可以將日期和時間格式化為指定的字元串格式。該函數中常用的格式化字元及其對應的含義如下:
| %Y | 四位數的年份 |
| %m | 月份(01-12) |
| %d | 月內中的一天(01-31) |
| %H | 24小時制小時數(00-23) |
| %M | 分鐘數(00-59) |
| %S | 秒數(00-59) |
同時我們也可以通過一些佔位符來添加一些常用的符號:
| %x | 日期部分,按照當前的locale設置輸出 |
| %X | 時間部分,按照當前的locale設置輸出 |
| %c | 完整的日期和時間,按照當前的locale設置輸出 |
| %a | 星期幾的縮寫 |
| %A | 星期幾的全拼 |
| %b | 月份的縮寫 |
| %B | 月份的全拼 |
下面是一個例子:
import datetime
dt = datetime.datetime.now()
date_str = dt.strftime('%Y-%m-%d %H:%M:%S')
print(date_str) # 輸出:2022-06-27 18:02:46
2. strptime()函數
strptime()函數可以將字元串解析為日期和時間。在解析時,我們需要提供一個與輸入字元串格式相同的格式化字元串。下面是一個例子:
import datetime date_str = '2022-06-26 12:30:00' dt = datetime.datetime.strptime(date_str, '%Y-%m-%d %H:%M:%S') print(dt) # 輸出:2022-06-26 12:30:00
三、日期和時間的計算
1. timedelta()
timedelta()是Python中用於表示時間差的類。我們可以使用它來進行日期和時間的加減操作。下面是一些操作的例子:
import datetime # 獲取明天的日期 now = datetime.datetime.now() tomorrow = now + datetime.timedelta(days=1) # 獲取下個月的日期 next_month = datetime.datetime.now().replace(month=datetime.datetime.now().month + 1) # 獲取當前時間加兩小時的時間 two_hours_later = datetime.datetime.now() + datetime.timedelta(hours=2) # 計算兩個日期之間的天數 d1 = datetime.date(2022, 6, 26) d2 = datetime.date(2022, 6, 30) delta = d2 - d1 print(delta.days) # 輸出:4
2. dateutil庫
dateutil庫是Python中的第三方庫,用於處理日期和時間。該庫提供了一些比datetime更加強大的功能。下面是一些使用dateutil庫的例子:
import datetime
import dateutil.parser
# 解析字元串中的日期和時間
date_str = '2022-06-26 12:30:00'
dt = dateutil.parser.parse(date_str)
# 獲取當前時間的UTC時間
utc_now = dateutil.tz.tzutc()
now = datetime.datetime.now()
now_utc = now.replace(tzinfo=dateutil.tz.tzlocal()).astimezone(utc_now)
# 時間的加減
now_plus_hour = now + dateutil.relativedelta.relativedelta(hours=1)
now_plus_week = now + dateutil.relativedelta.relativedelta(weeks=1)
# 時間戳和datetime之間的轉換
timestamp = 1624692362
dt2 = datetime.datetime.fromtimestamp(timestamp, dateutil.tz.gettz('Asia/Shanghai')))
四、總結
在本文中,我們詳細講解了Python datetime模塊的格式化使用。通過本文的學習,我們能夠更加方便地處理日期和時間,並將其格式化為符合我們使用場景的字元串。同時,我們還簡單介紹了Python中用於處理時間的第三方庫dateutil。它提供的一些強大的功能可以幫助我們更加高效地處理時間。
原創文章,作者:HOQN,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/134799.html
微信掃一掃
支付寶掃一掃