Định dạng ngày tháng (Date Formats) trong JavaScript
Javascript căn bản | by
Trong lập trình web, ngày tháng là một phần quan trọng khi làm việc với dữ liệu thời gian, như hiển thị thời gian bài viết, tạo lịch hẹn, hoặc theo dõi đơn hàng. Tuy nhiên, định dạng ngày tháng có sự khác biệt giữa các quốc gia và hệ thống, chẳng hạn như định dạng MM/DD/YYYY (Mỹ) và DD/MM/YYYY (Việt Nam, Châu Âu).
JavaScript cung cấp nhiều cách để định dạng ngày tháng, từ các phương thức có sẵn như toLocaleDateString()
, toISOString()
đến việc sử dụng Intl.DateTimeFormat
hoặc thư viện hỗ trợ như Moment.js, date-fns. Trong bài viết này, mình sẽ tìm hiểu chi tiết các phương pháp giúp hiển thị ngày tháng đúng chuẩn và phù hợp với từng nhu cầu cụ thể.
Định dạng ngày tháng trong JavaScript
Định dạng ngày tháng (Date Format) là cách hiển thị thông tin về ngày, tháng, năm theo một quy ước cụ thể. Tùy thuộc vào khu vực và ngữ cảnh sử dụng, định dạng ngày tháng có thể khác nhau.
Ví dụ về các định dạng phổ biến:
- MM/DD/YYYY → (12/31/2025) – Định dạng của Mỹ.
- DD/MM/YYYY → (31/12/2025) – Định dạng phổ biến ở Việt Nam, Châu Âu.
- YYYY-MM-DD → (2025-12-31) – Định dạng chuẩn ISO 8601.
Tại sao cần định dạng ngày tháng?
Việc định dạng ngày tháng đóng vai trò quan trọng trong lập trình và trải nghiệm người dùng:
Hiển thị ngày tháng phù hợp với từng khu vực: Giúp người dùng dễ dàng hiểu và đọc thông tin. Ví dụ, một người Mỹ có thể nhầm lẫn giữa 12/05/2025 (tháng 5 hay tháng 12?).
Cải thiện trải nghiệm người dùng: Ngày tháng được hiển thị rõ ràng, trực quan, giúp người dùng dễ dàng nắm bắt thông tin.
Dễ dàng so sánh, tính toán thời gian: Hỗ trợ các thao tác tính toán ngày tháng như tính số ngày giữa hai mốc thời gian, cộng/trừ ngày,...
Các cách định dạng ngày tháng trong JavaScript
JavaScript cung cấp nhiều phương pháp để định dạng ngày tháng, bao gồm:
- Sử dụng các phương thức có sẵn của Date:
toLocaleDateString()
,toISOString()
,toDateString()
,... - Dùng
Intl.DateTimeFormat
để tùy chỉnh định dạng ngày tháng theo ngôn ngữ. - Sử dụng thư viện bên ngoài như Moment.js, date-fns để xử lý ngày tháng nâng cao.
Trong các phần tiếp theo, chúng ta sẽ tìm hiểu chi tiết từng phương pháp để định dạng ngày tháng hiệu quả trong JavaScript.
Định dạng ngày tháng bằng phương thức có sẵn trong JavaScript
JavaScript cung cấp nhiều phương thức tích hợp sẵn để định dạng ngày tháng theo các tiêu chuẩn khác nhau. Dưới đây là các phương thức phổ biến cùng ví dụ minh họa.
toString() – Trả về chuỗi đầy đủ của đối tượng Date
Phương thức này trả về một chuỗi mô tả đầy đủ thời gian, bao gồm ngày tháng, giờ phút giây và múi giờ của hệ thống.
Ví dụ:
const now = new Date(); console.log(now.toString());
Kết quả (ví dụ trên máy có múi giờ GMT+7):
Tue Feb 26 2025 14:30:00 GMT+0700 (Indochina Time)
Lưu ý: Định dạng này phụ thuộc vào hệ điều hành và múi giờ của hệ thống.
toDateString() – Chỉ hiển thị phần ngày tháng
Phương thức này trả về một chuỗi hiển thị chỉ phần ngày tháng, không có giờ.
Ví dụ:
const now = new Date(); console.log(now.toDateString());
Kết quả:
Tue Feb 26 2025
Lưu ý: Định dạng này không thể tùy chỉnh theo ngôn ngữ.
toTimeString() – Chỉ hiển thị phần giờ
Phương thức này trả về chuỗi chứa thông tin về thời gian, không bao gồm ngày tháng.
Ví dụ:
const now = new Date(); console.log(now.toTimeString());
Kết quả:
14:30:00 GMT+0700 (Indochina Time)
Lưu ý: Chỉ hiển thị giờ, phút, giây và thông tin múi giờ.
toUTCString() – Hiển thị theo chuẩn thời gian quốc tế (UTC)
Phương thức này trả về chuỗi ngày giờ theo múi giờ UTC (GMT+0).
Ví dụ:
const now = new Date(); console.log(now.toUTCString());
Kết quả:
Tue, 26 Feb 2025 07:30:00 GMT
Lưu ý: Không phụ thuộc vào múi giờ hệ thống, luôn trả về theo chuẩn UTC.
Phương thức này trả về chuỗi ngày giờ theo chuẩn ISO 8601 với định dạng:
YYYY-MM-DDTHH:mm:ss.sssZ
(Z là ký hiệu múi giờ UTC).
Ví dụ:
const now = new Date(); console.log(now.toISOString());
Kết quả:
2025-02-26T07:30:00.000Z
Lưu ý:
- ISO 8601 là tiêu chuẩn quốc tế được sử dụng rộng rãi trong API và cơ sở dữ liệu.
- Múi giờ luôn là UTC (Z).
toLocaleString() – Định dạng theo ngôn ngữ địa phương
Phương thức này trả về ngày giờ theo định dạng của từng ngôn ngữ và quốc gia.
Ví dụ (mặc định theo ngôn ngữ trình duyệt/hệ thống):
const now = new Date(); console.log(now.toLocaleString());
Kết quả (trên hệ thống tiếng Việt):
26/2/2025, 14:30:00