Định dạng ngày tháng (Date Formats) trong JavaScript

Javascript căn bản | by Học Javascript

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
Ví dụ (định dạng theo tiếng Anh – Mỹ):
console.log(now.toLocaleString('en-US'));
Kết quả:
2/26/2025, 2:30:00 PM

Lưu ý: Có thể truyền tham số ngôn ngữ để tùy chỉnh định dạng.

toLocaleDateString() – Chỉ hiển thị phần ngày theo ngôn ngữ địa phương

Phương thức này tương tự toLocaleString(), nhưng chỉ hiển thị phần ngày mà không có giờ.

Ví dụ:

console.log(now.toLocaleDateString()); // Theo mặc định hệ thống
console.log(now.toLocaleDateString('vi-VN')); // Định dạng tiếng Việt
console.log(now.toLocaleDateString('en-US')); // Định dạng tiếng Anh - Mỹ
console.log(now.toLocaleDateString('ja-JP')); // Định dạng tiếng Nhật
Kết quả:
26/2/2025
26/2/2025
2/26/2025
2025/2/26

Lưu ý: Cách hiển thị ngày tháng thay đổi tùy theo ngôn ngữ.

toLocaleTimeString() – Chỉ hiển thị phần giờ theo ngôn ngữ địa phương

Phương thức này chỉ hiển thị thời gian theo ngôn ngữ địa phương.

Ví dụ:

console.log(now.toLocaleTimeString()); // Mặc định hệ thống
console.log(now.toLocaleTimeString('vi-VN')); // Tiếng Việt
console.log(now.toLocaleTimeString('en-US')); // Tiếng Anh - Mỹ
Kết quả:
14:30:00
14:30:00
2:30:00 PM

Lưu ý: Định dạng giờ thay đổi tùy theo ngôn ngữ (24h hoặc 12h AM/PM).

Phương thức Chức năng
toString() Chuỗi đầy đủ của Date (ngày, giờ, múi giờ).
toDateString() Chỉ hiển thị ngày tháng.
toTimeString() Chỉ hiển thị giờ, phút, giây, múi giờ.
toUTCString() Định dạng theo chuẩn UTC.
toISOString() Định dạng chuẩn ISO 8601 (YYYY-MM-DDTHH:mm:ss.sssZ).
toLocaleString() Định dạng ngày giờ theo ngôn ngữ địa phương.
toLocaleDateString() Chỉ hiển thị ngày theo ngôn ngữ địa phương.
toLocaleTimeString() Chỉ hiển thị giờ theo ngôn ngữ địa phương.

Định dạng ngày tháng bằng Intl.DateTimeFormat trong JavaScript

Intl.DateTimeFormat là một API mạnh mẽ trong JavaScript, giúp định dạng ngày tháng theo ngôn ngữ và vùng miền một cách linh hoạt. So với các phương thức có sẵn như toLocaleString(), Intl.DateTimeFormat cung cấp khả năng tùy chỉnh cao hơn và hiệu suất tốt hơn.

Khái niệm về Intl.DateTimeFormat

  • Đây là một API quốc tế hóa (Internationalization API) của JavaScript, dùng để định dạng ngày tháng theo tiêu chuẩn từng quốc gia.
  • Cho phép tùy chỉnh các thành phần như: năm, tháng, ngày, thứ, giờ, phút, giây.
  • Hỗ trợ nhiều ngôn ngữ và múi giờ khác nhau.

Cú pháp cơ bản:

new Intl.DateTimeFormat([locales], [options]).format(date)
  • locales: Chuỗi ngôn ngữ (ví dụ: 'vi-VN' cho tiếng Việt, 'en-US' cho tiếng Anh - Mỹ).
  • options: Đối tượng chứa các tùy chọn định dạng.
  • date: Đối tượng Date cần định dạng.

Ví dụ sử dụng Intl.DateTimeFormat trong JavaScript

Định dạng ngày tháng theo ngôn ngữ cụ thể

const date = new Date(2025, 1, 26); // 26 tháng 2, 2025

console.log(new Intl.DateTimeFormat('vi-VN').format(date)); // "26/2/2025"
console.log(new Intl.DateTimeFormat('en-US').format(date)); // "2/26/2025"
console.log(new Intl.DateTimeFormat('fr-FR').format(date)); // "26/02/2025"

Giải thích:

  • Tiếng Việt (vi-VN): Định dạng dd/mm/yyyy.
  • Tiếng Anh - Mỹ (en-US): Định dạng mm/dd/yyyy.
  • Tiếng Pháp (fr-FR): Định dạng dd/mm/yyyy.

Tùy chỉnh định dạng với options

Bạn có thể chỉ định các thành phần cần hiển thị như năm, tháng, ngày, thứ, giờ, phút, giây.

const date = new Date(2025, 1, 26, 14, 30, 45); // 26/2/2025, 14:30:45

const options = { year: 'numeric', month: 'long', day: '2-digit', weekday: 'long' };

console.log(new Intl.DateTimeFormat('vi-VN', options).format(date)); // "Thứ Tư, 26 tháng 2, 2025"
console.log(new Intl.DateTimeFormat('en-US', options).format(date)); // "Wednesday, February 26, 2025"
console.log(new Intl.DateTimeFormat('fr-FR', options).format(date)); // "mercredi 26 février 2025"

Tùy chọn options:

  • year: 'numeric' → Hiển thị đầy đủ năm (2025).
  • month: 'long' → Hiển thị tên tháng đầy đủ (Tháng Hai / February / février).
  • day: '2-digit' → Hiển thị ngày với hai chữ số (26).
  • weekday: 'long' → Hiển thị thứ đầy đủ (Thứ Tư / Wednesday / mercredi).

Lưu ý:

  • Có thể sử dụng month: 'short' (Th2, Feb, fév) hoặc month: 'numeric' (2).
  • Có thể sử dụng weekday: 'short' (T4, Wed, mer).

Hiển thị giờ, phút, giây

const date = new Date(2025, 1, 26, 14, 30, 45); // 26/2/2025, 14:30:45

const options = { hour: '2-digit', minute: '2-digit', second: '2-digit', hour12: false };

console.log(new Intl.DateTimeFormat('vi-VN', options).format(date)); // "14:30:45"
console.log(new Intl.DateTimeFormat('en-US', options).format(date)); // "14:30:45"
console.log(new Intl.DateTimeFormat('en-US', { ...options, hour12: true }).format(date)); // "2:30:45 PM"

Giải thích:

  • hour: '2-digit' → Hiển thị giờ với hai chữ số (14 hoặc 02).
  • minute: '2-digit' → Hiển thị phút với hai chữ số (30).
  • second: '2-digit' → Hiển thị giây với hai chữ số (45).
  • hour12: false → Sử dụng định dạng 24h. Nếu hour12: true, sẽ hiển thị kiểu AM/PM.

Hiển thị ngày giờ đầy đủ theo múi giờ

const date = new Date();

const options = { 
    year: 'numeric', month: 'long', day: '2-digit', 
    hour: '2-digit', minute: '2-digit', second: '2-digit', 
    timeZoneName: 'short'
};

console.log(new Intl.DateTimeFormat('vi-VN', options).format(date)); 
// "26 tháng 2, 2025, 14:30:45 GMT+7"

console.log(new Intl.DateTimeFormat('en-US', options).format(date)); 
// "February 26, 2025, 2:30:45 PM GMT+7"

console.log(new Intl.DateTimeFormat('ja-JP', options).format(date)); 
// "2025年2月26日 14:30:45 GMT+7"

Tùy chọn timeZoneName: 'short' giúp hiển thị thông tin múi giờ.

Lưu ý: Nếu muốn đổi múi giờ, có thể dùng timeZone:

const options = { timeZone: 'America/New_York', hour: '2-digit', minute: '2-digit' };
console.log(new Intl.DateTimeFormat('en-US', options).format(new Date()));
// Hiển thị giờ theo múi giờ New York

So sánh Intl.DateTimeFormat với toLocaleString()

Phương thức Mô tả
toLocaleString() Dễ sử dụng, nhưng ít tùy chỉnh hơn.
Intl.DateTimeFormat() Linh hoạt hơn, tối ưu hiệu suất, dễ tái sử dụng.

Tùy chỉnh định dạng ngày tháng với Moment.js và date-fns trong JavaScript

Trong JavaScript, ngoài các phương thức có sẵn như Intl.DateTimeFormat(), nhiều thư viện bên thứ ba giúp định dạng và xử lý ngày tháng dễ dàng hơn. Hai thư viện phổ biến nhất là Moment.jsdate-fns.

Moment.js

Moment.js là một thư viện mạnh mẽ giúp làm việc với ngày tháng trong JavaScript một cách đơn giản và hiệu quả. Nó cung cấp nhiều phương thức để định dạng, chuyển đổi, tính toán thời gian.

Ưu điểm:
Dễ sử dụng, cú pháp rõ ràng.
Hỗ trợ nhiều múi giờ, ngôn ngữ.
Có thể định dạng theo nhiều kiểu khác nhau.

Nhược điểm:
Kích thước lớn (~200KB), không còn được tích cực phát triển.
Có hiệu suất chậm hơn so với date-fns.

Cách cài đặt Moment.js

Dùng CDN (trong HTML)

<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.29.4/moment.min.js"></script>

Dùng npm (trong Node.js hoặc dự án React, Vue...)

npm install moment

Import Moment.js trong JavaScript

const moment = require('moment'); // Dùng trong Node.js
import moment from 'moment'; // Dùng trong ES6+

Định dạng ngày tháng với Moment.js

Sau khi cài đặt, bạn có thể sử dụng Moment.js để định dạng ngày tháng bằng phương thức .format().

Ví dụ cơ bản về .format()

const now = moment(); 

console.log(now.format('YYYY-MM-DD')); // 2025-02-26
console.log(now.format('DD/MM/YYYY')); // 26/02/2025
console.log(now.format('MMMM Do YYYY')); // February 26th 2025
console.log(now.format('dddd, MMMM Do YYYY, h:mm:ss A')); // Wednesday, February 26th 2025, 2:30:45 PM

Ý nghĩa các ký tự định dạng:

  • YYYY → Năm đầy đủ (2025).
  • MM → Tháng có 2 chữ số (02).
  • DD → Ngày có 2 chữ số (26).
  • MMMM → Tên tháng đầy đủ (February).
  • Do → Ngày kèm chữ thứ tự (26th).
  • dddd → Tên thứ đầy đủ (Wednesday).
  • h:mm:ss A → Giờ, phút, giây, và AM/PM (2:30:45 PM).

Định dạng theo múi giờ

Moment.js hỗ trợ moment-timezone để hiển thị ngày tháng theo múi giờ khác nhau.
Cài đặt moment-timezone:

npm install moment-timezone

Ví dụ sử dụng:

const moment = require('moment-timezone');

const now = moment().tz('America/New_York'); 
console.log(now.format('YYYY-MM-DD HH:mm:ss Z')); // 2025-02-26 09:30:45 -05:00
  • Z → Hiển thị chênh lệch múi giờ (GMT-5).

Ví dụ hiển thị ngày theo nhiều kiểu

const now = moment();

console.log("ISO 8601:", now.toISOString()); // 2025-02-26T14:30:45.000Z
console.log("UTC Format:", now.utc().format('YYYY-MM-DD HH:mm:ss')); // 2025-02-26 14:30:45
console.log("Relative Time:", now.startOf('day').fromNow()); // 14 hours ago
console.log("Custom Format:", now.format('[Hôm nay là] dddd, [ngày] DD [tháng] MM [năm] YYYY')); 
// Hôm nay là Thứ Tư, ngày 26 tháng 02 năm 2025

date-fns

date-fns là một thư viện nhẹ hơn Moment.js, cung cấp các hàm mạnh mẽ để xử lý ngày tháng.

Ưu điểm:
Nhẹ hơn Moment.js (~20KB).
Hiệu suất cao, hỗ trợ lập trình hàm (functional programming).
Cấu trúc mô-đun, chỉ cần import những gì cần thiết.

Nhược điểm:
Cú pháp phức tạp hơn Moment.js.
Không hỗ trợ múi giờ tốt như moment-timezone.

Cách cài đặt date-fns

Cài đặt qua npm/yarn:

npm install date-fns
Import date-fns trong JavaScript:
import { format } from 'date-fns';

Định dạng ngày tháng với date-fns

Ví dụ cơ bản về format()

import { format } from 'date-fns';

const now = new Date();

console.log(format(now, 'yyyy-MM-dd')); // 2025-02-26
console.log(format(now, 'dd/MM/yyyy')); // 26/02/2025
console.log(format(now, 'EEEE, MMMM do yyyy')); // Wednesday, February 26th 2025
console.log(format(now, 'HH:mm:ss')); // 14:30:45

Ý nghĩa ký tự định dạng:

  • yyyy → Năm đầy đủ (2025).
  • MM → Tháng có 2 chữ số (02).
  • dd → Ngày có 2 chữ số (26).
  • EEEE → Tên thứ đầy đủ (Wednesday).
  • HH:mm:ss → Giờ, phút, giây theo định dạng 24h.

So sánh date-fns và Moment.js

Tiêu chí Moment.js date-fns
Kích thước ~200KB ~20KB
Hiệu suất Chậm hơn Nhanh hơn
Cú pháp Dễ hiểu Hơi phức tạp
Múi giờ Hỗ trợ tốt (moment-timezone) Hỗ trợ hạn chế
Tính linh hoạt Đa năng, hỗ trợ nhiều tính năng Chỉ cung cấp các hàm cần thiết
Hỗ trợ quốc tế Có (moment.locale()) Không tốt bằng Moment.js

Xử lý múi giờ khi định dạng ngày tháng trong JavaScript

Trong JavaScript, múi giờ là một yếu tố quan trọng khi làm việc với ngày tháng, đặc biệt khi bạn cần xử lý dữ liệu ở nhiều khu vực khác nhau. Dưới đây là các cách xử lý múi giờ phổ biến và những lưu ý quan trọng.

toUTCString() vs toLocaleString()

toUTCString() – Hiển thị theo giờ UTC

Phương thức toUTCString() chuyển đổi ngày tháng sang giờ Quốc tế (UTC), giúp đảm bảo sự nhất quán khi làm việc với các hệ thống lưu trữ dữ liệu toàn cầu.

Ví dụ:

const now = new Date();
console.log(now.toUTCString()); 
// Kết quả: "Tue, 26 Feb 2025 14:30:45 GMT"

Đặc điểm:
Không phụ thuộc vào múi giờ của hệ thống.
Thường được sử dụng khi lưu trữ ngày tháng trong cơ sở dữ liệu.
Thích hợp cho các hệ thống cần đồng bộ thời gian trên nhiều múi giờ.

toLocaleString() – Hiển thị theo múi giờ địa phương

Phương thức toLocaleString() hiển thị ngày tháng theo múi giờ của người dùng, có thể được điều chỉnh bằng cách chỉ định mã ngôn ngữ và vùng địa lý.

Ví dụ:

const now = new Date();
console.log(now.toLocaleString('vi-VN')); 
// Kết quả (ở Việt Nam): "26/02/2025, 21:30:45"
console.log(now.toLocaleString('en-US')); 
// Kết quả (ở Mỹ): "2/26/2025, 9:30:45 AM"

Đặc điểm:
Phù hợp để hiển thị ngày tháng theo định dạng người dùng mong muốn.
Có thể chỉ định ngôn ngữ (vi-VN, en-US, fr-FR...).
Không thay đổi dữ liệu gốc, chỉ ảnh hưởng đến cách hiển thị.

Sử dụng Intl.DateTimeFormat để điều chỉnh múi giờ

Đối tượng Intl.DateTimeFormat trong JavaScript cung cấp cách linh hoạt để định dạng ngày tháng theo múi giờ cụ thể bằng tùy chọn timeZone.

Ví dụ sử dụng Intl.DateTimeFormat() để hiển thị ngày theo múi giờ Việt Nam (Asia/Ho_Chi_Minh) và New York (America/New_York):

const now = new Date();

const vietnamTime = new Intl.DateTimeFormat('vi-VN', { 
    timeZone: 'Asia/Ho_Chi_Minh', 
    dateStyle: 'full', 
    timeStyle: 'long' 
}).format(now);

const newYorkTime = new Intl.DateTimeFormat('en-US', { 
    timeZone: 'America/New_York', 
    dateStyle: 'full', 
    timeStyle: 'long' 
}).format(now);

console.log("Giờ Việt Nam:", vietnamTime); 
// Kết quả: "Thứ Tư, ngày 26 tháng 2 năm 2025 lúc 21:30:45 GMT+7"

console.log("Giờ New York:", newYorkTime); 
// Kết quả: "Wednesday, February 26, 2025 at 9:30:45 AM GMT-5"

Lưu ý:

  • dateStyletimeStyle có thể là "full", "long", "medium", "short" để định dạng mức độ chi tiết của ngày/giờ.
  • timeZone giúp hiển thị ngày giờ chính xác cho từng khu vực.

Lưu ý khi làm việc với hệ thống lưu trữ thời gian theo UTC trong JavaScript

Hầu hết các hệ thống lưu trữ như CSDL (MySQL, PostgreSQL), API RESTful đều lưu ngày giờ theo UTC để đảm bảo đồng bộ dữ liệu trên toàn cầu. Khi lấy dữ liệu từ hệ thống, bạn cần chuyển đổi sang múi giờ mong muốn để hiển thị đúng trên giao diện người dùng.

Khi lưu trữ thời gian vào CSDL

Lưu ngày giờ theo UTC để đảm bảo nhất quán.
Khi hiển thị, chuyển đổi về múi giờ địa phương của người dùng.

Ví dụ lưu ngày tháng theo UTC trong MySQL:

INSERT INTO orders (order_date) VALUES (UTC_TIMESTAMP());
Ví dụ trong JavaScript (chuyển Date về UTC trước khi gửi API):
const now = new Date();
const utcDate = now.toISOString(); 

console.log(utcDate); 
// Kết quả: "2025-02-26T14:30:45.000Z" (UTC format)

Khi hiển thị thời gian từ API hoặc CSDL

Giả sử API trả về ngày tháng theo định dạng UTC "2025-02-26T14:30:45.000Z", bạn có thể chuyển đổi sang múi giờ địa phương trước khi hiển thị.

Ví dụ chuyển đổi từ UTC sang múi giờ Việt Nam:

const utcDate = new Date("2025-02-26T14:30:45.000Z");

const localTime = new Intl.DateTimeFormat('vi-VN', { 
    timeZone: 'Asia/Ho_Chi_Minh', 
    dateStyle: 'medium', 
    timeStyle: 'medium' 
}).format(utcDate);

console.log(localTime); 
// Kết quả: "26 thg 2, 2025, 21:30:45"

Xử lý múi giờ với Moment.js và date-fns

Nếu sử dụng Moment.js, bạn có thể dùng moment-timezone:

const moment = require('moment-timezone');

const utcDate = moment.utc("2025-02-26T14:30:45.000Z");
const vietnamTime = utcDate.tz("Asia/Ho_Chi_Minh").format('YYYY-MM-DD HH:mm:ss');

console.log(vietnamTime); 
// Kết quả: "2025-02-26 21:30:45"

Nếu sử dụng date-fns, bạn có thể dùng date-fns-tz:

import { format, utcToZonedTime } from 'date-fns-tz';

const utcDate = new Date("2025-02-26T14:30:45.000Z");
const vietnamTime = utcToZonedTime(utcDate, 'Asia/Ho_Chi_Minh');

console.log(format(vietnamTime, 'yyyy-MM-dd HH:mm:ss', { timeZone: 'Asia/Ho_Chi_Minh' }));
// Kết quả: "2025-02-26 21:30:45"

Kết bài

Định dạng ngày tháng trong JavaScript đóng vai trò quan trọng trong việc hiển thị, tính toán và xử lý thời gian trong các ứng dụng web. Từ việc hiển thị ngày tháng theo chuẩn người dùng, tính toán khoảng thời gian, đến xử lý múi giờ, mỗi phương pháp đều giúp cải thiện trải nghiệm người dùng và đảm bảo tính chính xác của dữ liệu.

Bằng cách sử dụng các phương thức tích hợp như toLocaleString(), Intl.DateTimeFormat(), hoặc các thư viện như Moment.js, date-fns, lập trình viên có thể dễ dàng tùy chỉnh và định dạng ngày tháng theo nhu cầu cụ thể. Đặc biệt, trong các hệ thống lớn như mạng xã hội, đặt vé, kế toán, báo cáo, việc xử lý ngày tháng chính xác giúp đảm bảo tính nhất quán và tránh sai sót.

Bài viết liên quan

  • 2