Chuyển date (chỉ năm/tháng/ngày) sang datetime (có thêm giờ/phút/giây) bằng cách gán thời gian mặc định (thường là 00:00:00 - midnight).
Cách 1: datetime.combine() - Khuyến nghị
from datetime import date, datetime, time
d = date.today()
# time.min = 00:00:00
dt = datetime.combine(d, time.min)
print(dt) # 2024-01-15 00:00:00
Cách 2: Khởi tạo datetime trực tiếp từ date components
from datetime import date, datetime
d = date.today()
dt = datetime(d.year, d.month, d.day)
print(dt) # 2024-01-15 00:00:00
Cách 3: Gán thời gian tùy chỉnh
from datetime import date, datetime, time
d = date(2024, 1, 15)
t = time(9, 30, 0) # 09:30:00
dt = datetime.combine(d, t)
print(dt) # 2024-01-15 09:30:00
Cách 4: Dùng replace() trên datetime (nếu đã có datetime)
dt = datetime(2024, 1, 15, 14, 30)
dt_date_only = dt.replace(hour=0, minute=0, second=0, microsecond=0)
print(dt_date_only) # 2024-01-15 00:00:00
Tóm tắt
| Cách | Ưu điểm | Nhược điểm |
|---|---|---|
datetime.combine(date, time.min) | Rõ ràng, pythonic, dùng time object | Cần import time |
datetime(d.year, d.month, d.day) | Không cần import thêm | Verbose, dễ typo |
dt.replace(hour=0...) | Nếu đã có datetime | Chỉ dùng khi đã có dt |
Khuyến nghị: datetime.combine(d, time.min) cho code rõ ràng, dễ bảo trì.