時間格式是所有程式語言難記的東西,所以在此新增此篇進行說明。
time
time.time()可以取得目前系統的 TimeStamp (時間截記)。TimeStamp是指由 1970/01/01 0:0:0 到指定時間所經過的秒數。如下可以取得目前時間的 TimeStamp。
import time t1=time.time() print(f'目前的TimeStamp : {t1:,}秒') 結果: 目前的TimeStamp : 1,664,898,431.230126秒
如果想要知道某一段程式執行的秒數,可用如下方式
import time t1=time.time() for i in range(10000000): pass t2=time.time() print(f'花費時間 : {t2-t1}秒') 結果: 花費時間 : 0.16356658935546875秒
datetime
以前時間的計算,可以使用 time 函數,但現在不建議了,而是改用 datetime 方法。所以使用如下方式導入datetime類別。
from datetime import datetime
上述是很多初學者不明白的地方。其意思是 from datetime.py(檔案) import datatime(類別)
取得目前時間
datetime.now() 可以取得目前的 datetime 格式時間。current 是 datetime 格式,只不過在列印時,自動轉成了 string。
from datetime import datetime
current=datetime.now()
print(current)
結果:
2022-10-04 23:55:41.308959
datetime to string
正確將 datetime 格式轉成 string,需使用 strftime()函數,f 是 from 的意思。裏面的參數分別如下
%Y : 西元年
%m: 年
%d: 日
%H:時
%M:分
%s:秒
%f:毫秒
%w:星期幾
%W:本年的第幾周
from datetime import datetime current=datetime.now() s=current.strftime("%Y-%m-%d %H:%M:%S.%f")[:-3] print(s) 結果: 2022-10-04 23:59:02:886
string to datetime
若要使用字串建立 datetime 格式,有二種方式。
第一種是 datetime() 裏面傳入年月日時分秒等數字。
第二種是 datetime.strptime(字串, 格式),p 是 pointer的意思
from datetime import datetime
d1=datetime(2022,1,1)
d2=datetime.strptime("2021-01-01 10:30:25", "%Y-%m-%d %H:%M:%S")
print(d1)
print(d2)
結果:
2022-01-01 00:00:00
2021-01-01 10:30:25
timestamp to datetime
time.time() 取得 TimeStamp 後,可以轉成 datetime 格式
from datetime import datetime
import time
t1=time.time()
current=datetime.fromtimestamp(t1)
print(current)
結果:
2022-10-05 00:40:27.773955
datetime to timestamp
datetime 亦可以轉成 timestamp,如下所示
from datetime import datetime
current=datetime.now()
timestamp=current.timestamp()
print(f'TimeStamp : {timestamp:,}秒')
結果:
TimeStamp : 1,664,901,852.801957秒
相差天數
要計算二個時間點相差的天數,直接將二天的 datetime相減即可。相減之後傳回的 diff變數為 timedelta格式。diff.days 可以計算天數。
from datetime import datetime
current=datetime.now()
d1=datetime.strptime("1970-01-01 0:0:0", "%Y-%m-%d %H:%M:%S")
diff=current-d1
days=diff.days
print(f'1970/01/01 - 2022/10/05共有{days}天, 總共有{days*86400:,}秒')
結果:
1970/01/01 - 2022/10/05共有19270天, 總共有1,664,928,000秒
往前往後天數
要計算某日期往前或往後幾天的日期,需先import 下面二個類別。請注意 timedelta必需先撰寫
from datetime import timedelta from datetime import datetime
亦可以使用如下
from datetime import timedelta datetime
再使用 datetime跟 timedelta相加,timedelta的 days若為負數,則往前推,正數則往後推。同時也有 hours, minutes, seconds 等參數,如下所示
from datetime import timedelta
from datetime import datetime
current=datetime.strftime(datetime.now(),'%Y-%m-%d')
current=datetime.strptime(current, '%Y-%m-%d')
prev=current+timedelta(days=-5)
next=current+timedelta(days=5)
print(f"今天 : {current.strftime('%Y-%m-%d')}")
print(f"5天前 : {prev.strftime('%Y-%m-%d')}")
print(f"5天後 : {next.strftime('%Y-%m-%d')}")
結果:
今天 : 2022-10-05
5天前 : 2022-09-30
5天後 : 2022-10-10