การคำนวณวันที่และเวลาใน Python ทำได้ง่ายมากด้วยออบเจ็กต์ timedelta เมื่อต้องการบวกหรือลบวันที่/เวลา ให้ใช้ datetime.datetime() แล้วบวกหรือลบด้วยอินสแตนซ์ของ datetime.timedelta() ออบเจ็กต์ timedelta แทนช่วงเวลา (duration) คือ ความต่างระหว่างวันที่หรือเวลาสองจุด คอนสตรัคเตอร์ของ timedelta มีลายเซ็นฟังก์ชันดังนี้
datetime.timedelta([days[, seconds[, microseconds[, milliseconds[, minutes[, hours[, weeks]]]]]]])
หมายเหตุ: อาร์กิวเมนต์ทั้งหมดเป็นตัวเลือกและค่าเริ่มต้นคือ 0 อาจเป็น int, long, หรือ float ได้ และอาจเป็นค่าบวกหรือลบได้ คุณสามารถอ่านเพิ่มเติมได้ที่ เอกสาร Python อย่างเป็นทางการ
ตัวอย่าง
ตัวอย่างการใช้ timedelta กับวันที่
import datetime old_time = datetime.datetime.now() print(old_time) new_time = old_time - datetime.timedelta(hours=2, minutes=10) print(new_time)
ผลลัพธ์
จะได้ผลลัพธ์ดังนี้
2018-01-04 11:09:00.694602 2018-01-04 08:59:00.694602
การคำนวณ timedelta ไม่รองรับออบเจ็กต์ datetime.time() หากต้องการใช้ offset จาก datetime.time() ที่มีอยู่ ให้ใช้ datetime.datetime.combine() เพื่อสร้างอินสแตนซ์ datetime.datetime() คำนวณเสร็จแล้ว "ดึง" เวลาออกมาอีกครั้งด้วยเมธอด .time()
การลบออบเจ็กต์ datetime สองตัวจะให้ออบเจ็กต์ timedelta ซึ่งสามารถใช้หาความต่างที่แน่นอนระหว่างสองวันเวลาได้
ตัวอย่าง
t1 = datetime.datetime.now() t2 = datetime.datetime.now() print(t1 - t2) print(type(t1 - t2))
ผลลัพธ์
จะได้ผลลัพธ์ดังนี้
-1 day, 23:59:56.653627 <class 'datetime.timedelta'>