Quy trình chung
- JS: chuyển Date → ISO string (
toISOString()).
- Gửi qua network (AJAX, WebSocket, IPC).
- Python: parse ISO string bằng
datetime.fromisoformat() (Py 3.7+) hoặc strptime.
JavaScript (Client)
var jsDate = new Date(); // ví dụ: 2023-12-01T10:30:00.000Z
var isoString = jsDate.toISOString(); // "2023-12-01T10:30:00.000Z"
// Gửi isoString lên server
Python (Server)
from datetime import datetime
# Python 3.7+ (khuyên dùng)
date_string = '2023-12-01T10:30:00.000Z'
# Xử lý Z timezone
if date_string.endswith('Z'):
date_string = date_string[:-1] + '+00:00'
dt = datetime.fromisoformat(date_string)
print(dt) # 2023-12-01 10:30:00
# Python 3.6 hoặc format tùy chỉnh
date_string = '2017-12-31'
date_format = '%Y-%m-%d'
try:
dt = datetime.strptime(date_string, date_format)
print(dt) # 2017-12-31 00:00:00
except ValueError:
print("Sai format, kỳ vọng YYYY-MM-DD")
Bảng format strptime phổ biến
| Directive | Ý nghĩa |
| %Y | Năm 4 chữ số (2023) |
| %m | Tháng 01-12 |
| %d | Ngày 01-31 |
| %H | Giờ 24h 00-23 |
| %M | Phút 00-59 |
| %S | Giây 00-59 |
| %f | Microsecond 000000-999999 |
| %z | Timezone offset (+0000) |
Best practice
- Luôn dùng ISO 8601 (
toISOString()) trao đổi ngày giờ.
- Lưu trữ UTC, chuyển timezone chỉ khi hiển thị.
- Python:
dateutil.parser.isoparse() linh hoạt hơn fromisoformat.