這篇文章要介紹的是如何使用Python的datetime library。主要會介紹:datetime.now, datetime.total_seconds, datetime.strptime, 加減, timedelta等功能。
datetime.now
datetime.now顧名思義就是取得當下得時間。在使用上我們可以看到下面的代碼。
import datetime
print(datetime.datetime.now())
執行後就可以取得現在的時間了。
另外,在我們import datetime這個library時因為經常會使用到datetime裡的datetime這個功能(有點複雜)因此我們通常會將import寫成下面這個形式。
from datetime import datetime
接著我們可以透過datetime.now來分別取得年,月,日甚至是時分秒以及微秒等時間。
from datetime import datetime
day = datetime.now()
print(day.year)
print(day.month)
print(day.day)
結果會像以下這樣只輸出年月日的數值。
2023
2
9
下面的表格是datetime.now對應的各個屬性。
year | 年 |
month | 月 |
day | 日 |
hour | 時 |
minute | 分 |
second | 秒 |
microsecond | 百萬分之1秒 |
datetime.strptime
接著我們來看到如何利用datetime.strptime將文字轉換成datetime的格式。datetime.strptime的格式是以下這樣。
datetime.strptime(時間文字, format)
首先我們來看看如何將字串轉換成datetime格式。
from datetime import datetime
str_time = "2023/1/2 12:25:30"
time = datetime.strptime(str_time, "%Y/%m/%d %H:%M:%S")
print(time) #2023-01-02 12:25:30
如果是其他時間格式的話就換變成以下這樣。
from datetime import datetime
str_time = "2023年1月2日12點25分30秒"
time = datetime.strptime(str_time, "%Y年%m月%d日%H點%M分%S秒")
print(time) ##2023-01-02 12:25:30
f-string
f-string跟剛剛相反地是將datetime時間轉換成字串。首先我們先自己生成一個datetime時間再將他轉換成字串。
from datetime import datetime
day = datetime(2023, 7, 8, 9, 10, 11)
print(f'{day:%Y/%m/%d %H:%M/%S}')
結果會像下面這樣
2023/07/08 09:10/11
當然,f-string不只可以指定年月日,還有其他許多屬性可以參照下表。
%Y | 西暦 |
%m | 月( |
%d | 日 |
%H | 時 |
%M | 分 |
%S | 秒 |
%f | micro秒 |
%w | 星期的號碼(星期一是0以此類推) |
%A | 星期的名稱(Wednesday等) |
%a | 星期的縮寫(Wed等) |
利用上表,我們可以知道2023/07/08 09:10/11是星期幾。
from datetime import datetime
day = datetime(2023, 7, 8, 9, 10, 11)
print(f'{day:%Y/%m/%d %H:%M/%S} is {day:%A}')
2023/07/08 09:10/11 is Saturday
timedelta, 日期加減
利用timedelta可以對日期進行加減。首先我們要先新增一個timedelta的library。
from datetime import datetime, timedelta
newyear = datetime(2023, 1, 1)
diff = newyear - timedelta(days=100)
print(diff)
2022-09-23 00:00:00
從上面的代碼我們可以知道,在timedelta中指定想要增減的日期就可以對其他時間進行運算。
當然除了days以外,也有weeks, years, hours, minutes等時間可以自由指定。
留言