Python datetime用法(datetime.now, datetime.strptime, f-string, 加減, timedelta)

入門篇

這篇文章要介紹的是如何使用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
%fmicro秒
%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等時間可以自由指定。

留言