Cách sử dụng đối tượng Date trong JavaScript

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

Trong JavaScript, đối tượng Date là một công cụ quan trọng giúp làm việc với thời gian và ngày tháng. Nó cho phép chúng ta lấy thông tin ngày giờ hiện tại, định dạng thời gian theo nhiều cách khác nhau, tính toán khoảng cách giữa các ngày và thực hiện nhiều thao tác hữu ích khác.

Việc hiểu và sử dụng thành thạo Date giúp lập trình viên phát triển các tính năng quan trọng như hiển thị thời gian thực, tạo bộ đếm ngược, đặt lịch hẹn, tính toán thời gian giữa các sự kiện, v.v. Trong bài viết này, chúng ta sẽ tìm hiểu cách tạo và sử dụng đối tượng Date, cũng như các phương thức phổ biến để thao tác với nó trong JavaScript.

Giới thiệu về đối tượng Date trong JavaScript

Trong JavaScript, Date là một đối tượng tích hợp sẵn (built-in object) giúp làm việc với ngày, giờ, múi giờ và timestamp. Đối tượng Date cho phép tạo, truy xuất, chỉnh sửa và định dạng ngày giờ một cách linh hoạt.

Date trong JavaScript hoạt động dựa trên số mili-giây tính từ mốc thời gian chuẩn Unix Epoch (00:00:00 ngày 1 tháng 1 năm 1970 UTC).

Ví dụ tạo một đối tượng Date hiển thị thời gian hiện tại:

let now = new Date();  
console.log(now);  // Kết quả: Mon Feb 26 2025 14:30:00 GMT+0700 (Indochina Time)

Tại sao cần sử dụng đối tượng Date trong JavaScript?

Xử lý ngày giờ trong ứng dụng web

  • Hiển thị thời gian hiện tại trên trang web.
  • Tạo lịch hẹn, đặt lịch làm việc, nhắc nhở.
  • Hiển thị ngày đăng bài viết, ngày cập nhật dữ liệu.

Ví dụ:

document.getElementById("time").innerText = new Date().toLocaleString();

Tính toán khoảng thời gian giữa hai mốc thời gian

  • Tính số ngày giữa hai ngày (ví dụ: số ngày còn lại đến hạn thanh toán).
  • Tính khoảng cách giữa hai sự kiện trong ứng dụng (ví dụ: thời gian đếm ngược).

Ví dụ tính số ngày giữa hai ngày:

let date1 = new Date("2025-03-01");
let date2 = new Date("2025-02-26");
let difference = Math.abs(date1 - date2);
let daysDiff = difference / (1000 * 60 * 60 * 24);
console.log(daysDiff); // Kết quả: 3

Định dạng và hiển thị ngày giờ theo múi giờ khác nhau

  • Hỗ trợ làm việc với múi giờ khác nhau trong các ứng dụng quốc tế.
  • Chuyển đổi giữa múi giờ địa phương và UTC.
  • Hiển thị ngày giờ theo định dạng phù hợp với từng quốc gia.

Ví dụ hiển thị ngày giờ theo định dạng địa phương:

let now = new Date();
console.log(now.toLocaleString("vi-VN")); // Kết quả: 26/02/2025, 14:30:00

Cách tạo đối tượng Date trong JavaScript

Đối tượng Date trong JavaScript có thể được tạo theo nhiều cách khác nhau để phù hợp với nhu cầu sử dụng. Dưới đây là các cách phổ biến để khởi tạo một đối tượng Date, kèm theo ví dụ minh họa.

Tạo một đối tượng Date mới (Lấy thời gian hiện tại)

Cách đơn giản nhất để tạo một đối tượng Date là sử dụng new Date() mà không truyền tham số. Khi đó, JavaScript sẽ lấy thời gian hiện tại theo hệ thống của thiết bị người dùng.

let now = new Date();
console.log(now);  
// Kết quả: Mon Feb 26 2025 14:30:00 GMT+0700 (Indochina Time) (tùy vào thời gian thực tế)

Tạo đối tượng Date từ số mili-giây (milliseconds)

Bạn có thể khởi tạo Date từ số mili-giây tính từ mốc thời gian Unix Epoch (00:00:00 ngày 1 tháng 1 năm 1970 UTC).

let dateFromMs = new Date(1000000000000); 
console.log(dateFromMs);  
// Kết quả: Sat Sep 08 2001 21:46:40 GMT+0700 (Indochina Time)

Số mili-giây càng lớn thì ngày càng xa so với mốc 01/01/1970.

Tạo đối tượng Date từ chuỗi ngày tháng (dateString)

JavaScript cho phép tạo Date bằng cách truyền vào một chuỗi ngày tháng hợp lệ.

let dateFromString = new Date("2025-02-26");
console.log(dateFromString);  
// Kết quả: Wed Feb 26 2025 07:00:00 GMT+0700 (Indochina Time)

Lưu ý:

  • Chuỗi ngày tháng cần theo định dạng hợp lệ như YYYY-MM-DD hoặc MM/DD/YYYY.
  • Nếu dùng định dạng DD/MM/YYYY, JavaScript có thể hiểu nhầm hoặc trả về Invalid Date.

Tạo đối tượng Date bằng cách truyền các tham số cụ thể

Bạn có thể tạo một đối tượng Date bằng cách truyền từng giá trị thời gian theo thứ tự:

let customDate = new Date(2025, 1, 26, 14, 30, 0, 0);
console.log(customDate);  
// Kết quả: Wed Feb 26 2025 14:30:00 GMT+0700 (Indochina Time)

Giải thích tham số:

new Date(year, month, day, hour, minute, second, millisecond);
  • year (bắt buộc): Năm cần tạo.
  • month (bắt buộc): Tháng (từ 0 đến 11, lưu ý tháng 1 là 0, tháng 12 là 11).
  • day (tùy chọn, mặc định là 1): Ngày trong tháng.
  • hour (tùy chọn, mặc định là 0): Giờ trong ngày.
  • minute (tùy chọn, mặc định là 0): Phút.
  • second (tùy chọn, mặc định là 0): Giây.
  • millisecond (tùy chọn, mặc định là 0): Mili-giây.

Ví dụ tạo một ngày với thời gian cụ thể:

let myBirthday = new Date(1995, 5, 15, 10, 45, 30);
console.log(myBirthday);  
// Kết quả: Thu Jun 15 1995 10:45:30 GMT+0700 (Indochina Time)

Lưu ý:

  • Tháng bắt đầu từ 0 (tháng 1 = 0, tháng 12 = 11), nếu nhập sai sẽ dẫn đến ngày không mong muốn.
  • Nếu nhập ngày lớn hơn số ngày hợp lệ của tháng, JavaScript sẽ tự động chuyển sang tháng tiếp theo.
let invalidDate = new Date(2025, 1, 30);  
console.log(invalidDate);  
// Kết quả: Sat Mar 02 2025 00:00:00 GMT+0700 (Indochina Time) (Tự động chuyển sang tháng 3)
Cách tạo Mô tả Ví dụ
new Date() Lấy thời gian hiện tại new Date()
new Date(milliseconds) Tạo ngày từ mili-giây tính từ 01/01/1970 new Date(1000000000000)
new Date(dateString) Tạo ngày từ chuỗi ngày tháng new Date("2025-02-26")
new Date(year, month, day, hour, minute, second, ms) Tạo ngày với các tham số cụ thể new Date(2025, 1, 26, 14, 30, 0, 0)

Với kiến thức này, bạn có thể dễ dàng tạo và làm việc với thời gian trong JavaScript.

Các phương thức lấy thông tin từ Date trong JavaScript

Đối tượng Date trong JavaScript cung cấp nhiều phương thức giúp lấy thông tin chi tiết như ngày, tháng, năm, giờ, phút, giây... từ một giá trị thời gian. Dưới đây là các phương thức quan trọng và ví dụ minh họa cho từng phương thức.

Lấy ngày, tháng, năm, giờ, phút, giây từ Date

Lấy năm – getFullYear()

Phương thức getFullYear() trả về năm của đối tượng Date theo định dạng 4 chữ số.

let today = new Date();
console.log(today.getFullYear());  
// Ví dụ kết quả: 2025

Lấy tháng – getMonth()

Phương thức getMonth() trả về tháng của đối tượng Date. Lưu ý: Tháng bắt đầu từ 0 (Tháng 1 = 0, Tháng 12 = 11).

console.log(today.getMonth());  
// Ví dụ kết quả: 1 (Tháng 2 vì tháng bắt đầu từ 0)

Cách lấy tháng đúng với người dùng:

let month = today.getMonth() + 1;  // Cộng thêm 1 để đúng với thực tế
console.log(month);
// Kết quả: 2 (Tháng 2)

Lấy ngày trong tháng – getDate()

Phương thức getDate() trả về số ngày trong tháng (từ 1 đến 31).

console.log(today.getDate());  
// Ví dụ kết quả: 26 (nếu hôm nay là ngày 26)

Lấy ngày trong tuần – getDay()

Phương thức getDay() trả về ngày trong tuần dưới dạng số (0 - 6), trong đó Chủ Nhật = 0, Thứ Hai = 1, ..., Thứ Bảy = 6.

console.log(today.getDay());  
// Ví dụ kết quả: 3 (nếu hôm nay là Thứ Tư)

Cách chuyển số thành tên ngày trong tuần:

let days = ["Chủ Nhật", "Thứ Hai", "Thứ Ba", "Thứ Tư", "Thứ Năm", "Thứ Sáu", "Thứ Bảy"];
console.log(days[today.getDay()]);  
// Kết quả: "Thứ Tư"

Lấy giờ, phút, giây, mili-giây

Phương thức Công dụng Ví dụ kết quả
getHours() Lấy giờ (0 - 23) 14 (2 giờ chiều)
getMinutes() Lấy phút (0 - 59) 30
getSeconds() Lấy giây (0 - 59) 15
getMilliseconds() Lấy mili-giây (0 - 999) 532

Ví dụ minh họa:

console.log(today.getHours());        // Giờ hiện tại
console.log(today.getMinutes());      // Phút hiện tại
console.log(today.getSeconds());      // Giây hiện tại
console.log(today.getMilliseconds()); // Mili-giây hiện tại

Lấy timestamp (Số mili-giây từ 01/01/1970) – getTime()

Phương thức getTime() trả về số mili-giây tính từ mốc thời gian Unix Epoch (00:00:00 ngày 1 tháng 1 năm 1970 UTC).

console.log(today.getTime());  
// Ví dụ kết quả: 1745860221532 (tùy vào thời gian thực tế)

Ứng dụng của getTime():

  • So sánh hai ngày
  • Tính khoảng cách giữa các mốc thời gian
  • Tạo bộ đếm thời gian (timer, countdown)

Ví dụ: Tính số ngày giữa hai ngày

let date1 = new Date("2025-02-26");
let date2 = new Date("2025-03-10");

let difference = date2.getTime() - date1.getTime();
let daysDifference = difference / (1000 * 60 * 60 * 24);  

console.log(daysDifference);  
// Kết quả: 12 (Có 12 ngày giữa 26/02/2025 và 10/03/2025)
Phương thức Công dụng Giá trị trả về
getFullYear() Lấy năm 2025
getMonth() Lấy tháng (0-11) 1 (Tháng 2)
getDate() Lấy ngày trong tháng (1-31) 26
getDay() Lấy ngày trong tuần (0-6) 3 (Thứ Tư)
getHours() Lấy giờ (0-23) 14
getMinutes() Lấy phút (0-59) 30
getSeconds() Lấy giây (0-59) 15
getMilliseconds() Lấy mili-giây (0-999) 532
getTime() Lấy timestamp (số mili-giây từ 01/01/1970) 1745860221532

Các phương thức thiết lập giá trị ngày giờ trong JavaScript

Ngoài việc lấy thông tin từ một đối tượng Date, JavaScript cũng cung cấp các phương thức để thiết lập ngày, tháng, năm, giờ, phút, giây. Điều này giúp bạn cập nhật giá trị của một đối tượng Date mà không cần tạo mới.

Dưới đây là danh sách các phương thức thay đổi giá trị ngày giờ và ví dụ minh họa.

Thiết lập năm, tháng, ngày

Thiết lập năm – setFullYear(year)

Phương thức setFullYear(year) giúp cập nhật năm cho một đối tượng Date.

Cú pháp:

date.setFullYear(year);

Ví dụ:

let myDate = new Date();  
console.log("Trước khi thay đổi:", myDate);

myDate.setFullYear(2030);  
console.log("Sau khi thay đổi năm:", myDate);

Lưu ý: Bạn có thể đặt thêm tháng và ngày khi sử dụng setFullYear(year, month, day).

myDate.setFullYear(2030, 5, 15);  // Đặt năm 2030, tháng 6, ngày 15

Thiết lập tháng – setMonth(month)

Phương thức setMonth(month) cập nhật tháng của một đối tượng Date.

Lưu ý:

  • Tháng trong JavaScript bắt đầu từ 0 (Tháng 1 = 0, Tháng 12 = 11).
  • Nếu đặt giá trị lớn hơn 11, nó sẽ tự động cộng dồn sang năm sau.

Ví dụ:

let myDate = new Date();  
console.log("Trước khi thay đổi:", myDate);

myDate.setMonth(10);  // Đặt tháng 11 (vì tháng bắt đầu từ 0)
console.log("Sau khi thay đổi tháng:", myDate);

Thiết lập ngày – setDate(day)

Phương thức setDate(day) thay đổi ngày trong tháng.

Lưu ý:

  • Nếu đặt ngày lớn hơn số ngày của tháng, nó sẽ tự động tăng sang tháng tiếp theo.

Ví dụ:

let myDate = new Date("2025-02-15");  
console.log("Trước khi thay đổi:", myDate);

myDate.setDate(28);  // Đặt ngày 28 trong tháng 2
console.log("Sau khi thay đổi ngày:", myDate);

Ví dụ với ngày vượt quá giới hạn:

myDate.setDate(35);  // Ngày 35 không hợp lệ, tự động chuyển sang tháng tiếp theo
console.log("Sau khi đặt ngày 35:", myDate);

Thiết lập giờ, phút, giây, mili-giây

Thiết lập giờ – setHours(hour)

Ví dụ:

let myDate = new Date();  
console.log("Trước khi thay đổi:", myDate);

myDate.setHours(22);  // Đặt giờ thành 22 (10 giờ tối)
console.log("Sau khi thay đổi giờ:", myDate);

Có thể truyền thêm phút, giây và mili-giây:

myDate.setHours(22, 30, 45, 500);  // Đặt giờ 22:30:45.500

Thiết lập phút – setMinutes(minute)

Ví dụ:

myDate.setMinutes(45);  // Đặt phút thành 45
console.log("Sau khi thay đổi phút:", myDate);

Có thể truyền thêm giây và mili-giây:

myDate.setMinutes(45, 30, 500);  // Đặt phút 45, giây 30, mili-giây 500

Thiết lập giây – setSeconds(second)

Ví dụ:

myDate.setSeconds(10);  // Đặt giây thành 10
console.log("Sau khi thay đổi giây:", myDate);
Có thể truyền thêm mili-giây:
myDate.setSeconds(10, 500);  // Đặt giây 10, mili-giây 500

Thiết lập mili-giây – setMilliseconds(ms)

Ví dụ:

myDate.setMilliseconds(250);  // Đặt mili-giây thành 250
console.log("Sau khi thay đổi mili-giây:", myDate);
Phương thức Công dụng Ví dụ
setFullYear(year) Thiết lập năm setFullYear(2030)
setFullYear(year, month, day) Thiết lập năm, tháng, ngày setFullYear(2030, 5, 15)
setMonth(month) Thiết lập tháng (0 - 11) setMonth(10)
setDate(day) Thiết lập ngày trong tháng (1 - 31) setDate(28)
setHours(hour) Thiết lập giờ (0 - 23) setHours(22)
setMinutes(minute) Thiết lập phút (0 - 59) setMinutes(45)
setSeconds(second) Thiết lập giây (0 - 59) setSeconds(10)
setMilliseconds(ms) Thiết lập mili-giây (0 - 999) setMilliseconds(250)

Cập nhật ngày giờ thực tế

Dưới đây là một ví dụ hoàn chỉnh thay đổi nhiều giá trị của Date cùng lúc:

let myDate = new Date("2025-02-15 10:00:00");
console.log("Ngày ban đầu:", myDate);

myDate.setFullYear(2030);  // Đặt năm thành 2030
myDate.setMonth(5);        // Đặt tháng thành 6 (vì tháng bắt đầu từ 0)
myDate.setDate(20);        // Đặt ngày thành 20
myDate.setHours(15);       // Đặt giờ thành 15 (3 giờ chiều)
myDate.setMinutes(45);     // Đặt phút thành 45
myDate.setSeconds(30);     // Đặt giây thành 30

console.log("Ngày sau khi cập nhật:", myDate);

Kết quả mong đợi:

Ngày ban đầu: Sat Feb 15 2025 10:00:00
Ngày sau khi cập nhật: Thu Jun 20 2030 15:45:30

Định dạng và hiển thị ngày giờ trong JavaScript

Trong JavaScript, khi làm việc với đối tượng Date, chúng ta thường cần hiển thị ngày giờ theo các định dạng khác nhau. JavaScript cung cấp nhiều phương thức để chuyển đổi Date thành chuỗi văn bản phù hợp với nhu cầu sử dụng.

Dưới đây là chi tiết về các phương thức này, cũng như cách tùy chỉnh định dạng ngày tháng.

Chuyển Date thành chuỗi

toString() – Chuyển đổi Date thành chuỗi đầy đủ

Phương thức toString() chuyển đổi một đối tượng Date thành chuỗi đầy đủ chứa cả ngày, giờ, múi giờ.

Ví dụ:

let now = new Date();
console.log(now.toString());

Kết quả:

Tue Feb 26 2025 15:30:00 GMT+0700 (Indochina Time)

Lưu ý: Kết quả có thể khác nhau tùy vào múi giờ của máy tính.

toDateString() – Lấy phần ngày tháng (không có giờ)

Phương thức toDateString() chỉ lấy phần ngày, tháng, năm của Date, không hiển thị giờ.

Ví dụ:

let now = new Date();
console.log(now.toDateString());

Kết quả:

Tue Feb 26 2025

toTimeString() – Lấy phần giờ (không có ngày)

Phương thức toTimeString() chỉ lấy phần giờ, phút, giây và múi giờ.

Ví dụ:

console.log(now.toTimeString());

Kết quả:

15:30:00 GMT+0700 (Indochina Time)

toUTCString() – Hiển thị theo chuẩn UTC

Phương thức toUTCString() giúp hiển thị ngày giờ theo múi giờ UTC (Coordinated Universal Time).

Ví dụ:

console.log(now.toUTCString());

Kết quả:

Tue, 26 Feb 2025 08:30:00 GMT

Lưu ý: UTC thường dùng trong các hệ thống yêu cầu đồng bộ thời gian trên toàn cầu.

toLocaleString() – Hiển thị theo ngôn ngữ địa phương

Phương thức toLocaleString(locale, options) cho phép định dạng ngày giờ theo ngôn ngữ cụ thể.

Ví dụ mặc định (tự động theo ngôn ngữ máy tính):

console.log(now.toLocaleString());
Ví dụ theo ngôn ngữ Việt Nam (vi-VN):
console.log(now.toLocaleString("vi-VN"));
Ví dụ theo định dạng Mỹ (en-US):
console.log(now.toLocaleString("en-US"));

Kết quả tương ứng:

26/2/2025, 15:30:00  (Tiếng Việt)
2/26/2025, 3:30:00 PM  (Tiếng Anh - Mỹ)

Lưu ý: Định dạng ngày tháng thay đổi tùy theo vùng ngôn ngữ.

Tùy chỉnh định dạng ngày tháng

Ngoài các phương thức mặc định, ta có thể tùy chỉnh định dạng hiển thị bằng Intl.DateTimeFormat() hoặc dùng thư viện hỗ trợ như Moment.js, date-fns.

Dùng Intl.DateTimeFormat() để tùy chỉnh định dạng

Intl.DateTimeFormat() là API có sẵn trong JavaScript, giúp định dạng ngày giờ linh hoạt theo ngôn ngữ và yêu cầu cụ thể.

Ví dụ:

let date = new Date();

// Định dạng ngày tháng năm kiểu Việt Nam
let vnFormat = new Intl.DateTimeFormat("vi-VN").format(date);
console.log("VN:", vnFormat);

// Định dạng kiểu Mỹ
let usFormat = new Intl.DateTimeFormat("en-US").format(date);
console.log("US:", usFormat);

// Định dạng tùy chỉnh (năm, tháng, ngày, giờ, phút)
let customFormat = new Intl.DateTimeFormat("vi-VN", {
    year: "numeric",
    month: "long",
    day: "2-digit",
    weekday: "long",
    hour: "2-digit",
    minute: "2-digit",
    second: "2-digit"
}).format(date);

console.log("Custom:", customFormat);
Kết quả:
VN: 26/2/2025
US: 2/26/2025
Custom: Thứ Ba, 26 tháng 2, 2025 15:30:00

Lưu ý:

  • year: "numeric" → Hiển thị năm đầy đủ.
  • month: "long" → Hiển thị tên tháng đầy đủ (VD: "Tháng Hai").
  • day: "2-digit" → Hiển thị ngày có 2 chữ số (VD: "26").
  • weekday: "long" → Hiển thị thứ trong tuần (VD: "Thứ Ba").
  • hour, minute, second → Hiển thị giờ, phút, giây.

Dùng thư viện Moment.js hoặc date-fns (khi cần nâng cao)

Moment.js (Không khuyến nghị do đã lỗi thời, nhưng vẫn phổ biến)

// Chỉ sử dụng nếu đã cài Moment.js
let momentDate = moment().format("DD/MM/YYYY HH:mm:ss");
console.log(momentDate);  // "26/02/2025 15:30:00"
date-fns (Hiện đại hơn, tối ưu hơn Moment.js)
import { format } from 'date-fns';
console.log(format(new Date(), "dd/MM/yyyy HH:mm:ss")); 

Gợi ý:

  • Intl.DateTimeFormat() đủ mạnh cho hầu hết các trường hợp.
  • Nếu cần tính toán ngày tháng phức tạp, date-fns là lựa chọn tốt hơn Moment.js.
Phương thức Mô tả Ví dụ
toString() Chuỗi đầy đủ của Date "Tue Feb 26 2025 15:30:00 GMT+0700"
toDateString() Chỉ lấy ngày tháng, không có giờ "Tue Feb 26 2025"
toTimeString() Chỉ lấy giờ, không có ngày "15:30:00 GMT+0700"
toUTCString() Hiển thị theo chuẩn UTC "Tue, 26 Feb 2025 08:30:00 GMT"
toLocaleString() Hiển thị theo ngôn ngữ địa phương "26/2/2025, 15:30:00" (VN)
Intl.DateTimeFormat() Tùy chỉnh định dạng theo ngôn ngữ "Thứ Ba, 26 tháng 2, 2025"

Tính toán với đối tượng Date trong JavaScript

Đối tượng Date trong JavaScript không chỉ giúp lấy và hiển thị thời gian mà còn có thể thực hiện các phép tính toán thời gian như cộng/trừ ngày, giờ, phút hoặc xác định khoảng cách giữa hai mốc thời gian.

Dưới đây là các cách thực hiện chi tiết.

Cộng/trừ ngày, giờ, phút,... với Date

Trong JavaScript, các phương thức như setDate(), setMonth(), setFullYear(), setHours(),... cho phép thay đổi giá trị ngày, tháng, năm, giờ,... của một đối tượng Date.

Cộng/trừ ngày

Ta có thể cộng/trừ ngày bằng cách:

  • Lấy ngày hiện tại bằng getDate().
  • Cộng hoặc trừ số ngày mong muốn rồi gán lại bằng setDate().

Ví dụ:

let today = new Date();
console.log("Hôm nay:", today.toDateString());

// Cộng 5 ngày
today.setDate(today.getDate() + 5);
console.log("Sau 5 ngày:", today.toDateString());

// Trừ 3 ngày
today.setDate(today.getDate() - 3);
console.log("Lùi 3 ngày:", today.toDateString());

Lưu ý: Nếu cộng ngày vượt quá số ngày trong tháng, JavaScript sẽ tự động chuyển sang tháng tiếp theo.

Cộng/trừ tháng

Tương tự với ngày, ta có thể dùng setMonth(getMonth() + n) để cộng/trừ tháng.

Ví dụ:

let today = new Date();
console.log("Tháng hiện tại:", today.toDateString());

// Cộng 2 tháng
today.setMonth(today.getMonth() + 2);
console.log("Sau 2 tháng:", today.toDateString());

// Trừ 1 tháng
today.setMonth(today.getMonth() - 1);
console.log("Lùi 1 tháng:", today.toDateString());

Lưu ý:

  • Nếu cộng tháng vượt quá tháng 11, JavaScript sẽ tự động chuyển sang năm sau.
  • Nếu trừ tháng xuống dưới tháng 0 (tháng 1), JavaScript sẽ tự động lùi về năm trước.

Cộng/trừ năm

Dùng setFullYear(getFullYear() + n) để cộng/trừ năm.

Ví dụ:

let today = new Date();
console.log("Năm hiện tại:", today.toDateString());

// Cộng 1 năm
today.setFullYear(today.getFullYear() + 1);
console.log("Sau 1 năm:", today.toDateString());

// Trừ 2 năm
today.setFullYear(today.getFullYear() - 2);
console.log("Lùi 2 năm:", today.toDateString());

Lưu ý: Nếu năm nhuận, JavaScript vẫn tự động điều chỉnh đúng số ngày.

Cộng/trừ giờ, phút, giây

Dùng setHours(), setMinutes(), setSeconds() để thay đổi giờ, phút, giây.

Ví dụ:

let now = new Date();
console.log("Thời gian hiện tại:", now.toTimeString());

// Cộng 3 giờ
now.setHours(now.getHours() + 3);
console.log("Sau 3 giờ:", now.toTimeString());

// Trừ 15 phút
now.setMinutes(now.getMinutes() - 15);
console.log("Lùi 15 phút:", now.toTimeString());

// Cộng 30 giây
now.setSeconds(now.getSeconds() + 30);
console.log("Sau 30 giây:", now.toTimeString());

Lưu ý: Nếu cộng/trừ giờ vượt quá 23 hoặc 0, JavaScript sẽ tự động chuyển ngày.

Tính khoảng cách giữa hai mốc thời gian

Trong JavaScript, ta có thể tính khoảng cách giữa hai thời điểm bằng cách sử dụng getTime().

  • getTime() trả về số mili-giây từ 01/01/1970 đến thời điểm hiện tại.
  • Khi trừ hai mốc thời gian, ta có thể chuyển đổi kết quả sang ngày, giờ, phút, giây.

Tính số mili-giây giữa hai ngày

Ví dụ:

let date1 = new Date("2025-02-26");
let date2 = new Date("2025-03-05");

let diffMs = date2.getTime() - date1.getTime();
console.log("Chênh lệch (ms):", diffMs);

Lưu ý:

  • Kết quả trên là số mili-giây giữa ngày 5/3/2025ngày 26/2/2025.

Tính số ngày giữa hai mốc thời gian

Công thức:

Số ngày = (Số mili-giây) / (1000 * 60 * 60 * 24)

Ví dụ:

let daysDiff = diffMs / (1000 * 60 * 60 * 24);
console.log("Khoảng cách giữa hai ngày:", daysDiff, "ngày");

Lưu ý: Kết quả là 7 ngày.

Tính số giờ, phút, giây giữa hai thời điểm

Dùng công thức:

  • Số giờ = (Số mili-giây) / (1000 * 60 * 60)
  • Số phút = (Số mili-giây) / (1000 * 60)
  • Số giây = (Số mili-giây) / 1000

Ví dụ:

let hoursDiff = diffMs / (1000 * 60 * 60);
console.log("Khoảng cách giữa hai mốc thời gian:", hoursDiff, "giờ");

let minutesDiff = diffMs / (1000 * 60);
console.log("Khoảng cách:", minutesDiff, "phút");

let secondsDiff = diffMs / 1000;
console.log("Khoảng cách:", secondsDiff, "giây");

Kết quả:

Khoảng cách giữa hai mốc thời gian: 168 giờ
Khoảng cách: 10080 phút
Khoảng cách: 604800 giây

Kết bài

Đối tượng Date trong JavaScript là một công cụ mạnh mẽ giúp xử lý thời gian và ngày tháng trong các ứng dụng web. Từ việc hiển thị thời gian hiện tại, tạo bộ đếm ngược, đặt lịch hẹn, tính toán khoảng cách giữa hai ngày đến kiểm tra ngày cuối tuần hoặc ngày lễ, Date đóng vai trò quan trọng trong nhiều tình huống thực tế.

Việc hiểu và sử dụng thành thạo Date sẽ giúp lập trình viên xây dựng các ứng dụng web chính xác, thân thiện với người dùng và dễ bảo trì. Ngoài ra, nếu cần xử lý thời gian phức tạp hơn, bạn có thể sử dụng thêm các thư viện hỗ trợ như Moment.js hoặc date-fns để nâng cao hiệu suất và độ linh hoạt.

Bài viết liên quan

  • 2