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