Định dạng ISO 8601 (ví dụ: 2017-12-31T00:00:00) là tiêu chuẩn quốc tế cho ngày giờ. Python hỗ trợ sẵn qua phương thức isoformat().
Python 3: Dùng isoformat()
from datetime import datetime
now = datetime.now()
print(now.isoformat())
# Kết quả: 2018-01-02T22:08:12.510696
Có thể truyền tham số timespec để kiểm soát độ chính xác:
print(now.isoformat(timespec='seconds')) # 2018-01-02T22:08:12
print(now.isoformat(timespec='milliseconds')) # 2018-01-02T22:08:12.510
print(now.isoformat(timespec='microseconds')) # 2018-01-02T22:08:12.510696
Python 2 (hoặc tùy chỉnh): Dùng strftime()
from datetime import datetime
now = datetime.now()
# Format ISO cơ bản
print(now.strftime('%Y-%m-%dT%H:%M:%S.%f'))
# Kết quả: 2018-01-02T22:10:05.284208
Để có timezone offset (ví dụ +07:00), datetime phải aware (có tzinfo):
from datetime import datetime, timezone
now_utc = datetime.now(timezone.utc)
print(now_utc.isoformat()) # 2018-01-02T15:08:12.510696+00:00
Tóm tắt
- Python 3.6+:
dt.isoformat(timespec='...')linh hoạt nhất. - Python 2/3 cũ:
dt.strftime('%Y-%m-%dT%H:%M:%S.%f%z')(cần datetime aware cho %z). - Luôn ưu tiên
isoformat()vì chuẩn chuẩn, ít lỗi hơn format thủ công.