Khi có số giây cần chuyển sang định dạng HH:MM:SS, có hai cách phổ biến: dùng divmod() (nhanh, không tạo đối tượng) hoặc datetime.timedelta (dễ đọc, chậm hơn).
Cách 1: Dùng divmod() - Hiệu quả cao
divmod(a, b) trả về cặp (a // b, a % b) chỉ với một phép chia.
seconds = 56741
minutes, seconds = divmod(seconds, 60)
hours, minutes = divmod(minutes, 60)
print(f"{hours}:{minutes:02d}:{seconds:02d}")
Kết quả
15:45:41
Cách 2: Dùng datetime.timedelta - Dễ hiểu
import datetime
td = datetime.timedelta(seconds=56741)
print(td) # Tự động format HH:MM:SS
Kết quả
15:45:41
So sánh
| Tiêu chí | divmod() | timedelta |
|---|---|---|
| Hiệu năng | Rất nhanh | Chậm hơn (tạo object) |
| Độ chính xác | Tùy chỉnh được | Giới hạn ~999999999 ngày |
| Code | 3 dòng | 1 dòng |
Khuyến nghị: Dùng divmod() cho hiệu năng cao hoặc lặp nhiều lần; dùng timedelta cho code đơn giản, dễ bảo trì.