Python hỗ trợ toán học ngày giờ rất tốt thông qua class timedelta trong module datetime. Mỗi khi cần cộng/trừ một khoảng thời gian, hãy tạo đối tượng datetime và cộng/trừ với timedelta.
Cú pháp timedelta
datetime.timedelta([days[, seconds[, microseconds[, milliseconds[, minutes[, hours[, weeks]]]]]]])
Tất cả tham số tùy chọn, mặc định 0. Chấp nhận int, float, dương/âm.
Ví dụ cơ bản
import datetime
now = datetime.datetime.now()
print("Hiện tại:", now)
# Trừ 2 giờ 10 phút
earlier = now - datetime.timedelta(hours=2, minutes=10)
print("Trước đó:", earlier)
Kết quả
Hiện tại: 2018-01-04 11:09:00.694602
Trước đó: 2018-01-04 08:59:00.694602
Lưu ý về datetime.time
timedelta không làm việc trực tiếp với datetime.time(). Giải pháp: dùng datetime.combine(date, time) tạo datetime, tính toán, rồi lấy .time().
Tính chênh lệch giữa hai datetime
Phép trừ hai datetime trả về timedelta - rất hữu ích để biết khoảng thời gian chính xác.
Ví dụ
t1 = datetime.datetime.now()
t2 = datetime.datetime.now()
delta = t1 - t2
print(delta)
print(type(delta))
Kết quả
-1 day, 23:59:56.653627
<class 'datetime.timedelta'>