Các phương thức lấy ngày tháng trong JavaScript

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

Trong lập trình JavaScript, việc làm việc với ngày tháng là một phần quan trọng trong nhiều ứng dụng, từ hiển thị thời gian trên website, quản lý lịch sự kiện, đến tính toán khoảng thời gian giữa hai mốc. JavaScript cung cấp đối tượng Date cùng nhiều phương thức hữu ích để lấy thông tin về ngày, tháng, năm, giờ, phút, giây theo múi giờ địa phương hoặc theo chuẩn UTC.

Vậy các phương thức lấy ngày tháng trong JavaScript hoạt động như thế nào? Khi nào nên sử dụng từng phương thức? Hãy cùng tìm hiểu chi tiết trong bài viết này!

Các phương thức lấy ngày tháng trong JavaScript

Trong JavaScript, đối tượng Date cung cấp nhiều phương thức giúp lấy thông tin về ngày, tháng, năm, giờ, phút, giây từ một mốc thời gian cụ thể. Những phương thức này giúp lập trình viên có thể dễ dàng thao tác với dữ liệu thời gian trong các ứng dụng.

Tại sao cần lấy ngày tháng trong JavaScript?

Việc lấy ngày tháng là một yêu cầu phổ biến trong nhiều ứng dụng web và phần mềm, bao gồm:

  • Hiển thị ngày tháng trong ứng dụng web: Ví dụ, hiển thị ngày đăng bài viết, thời gian bình luận, lịch sử giao dịch.
  • Xử lý thời gian cho các tác vụ như đặt lịch, đếm ngược, thông báo: Giúp xây dựng các chức năng như đặt vé xem phim, nhắc nhở công việc, hoặc bộ đếm thời gian (countdown timer).
  • Tính toán khoảng cách thời gian giữa hai mốc thời gian: Dùng để đo thời gian hoàn thành công việc, tuổi của người dùng, số ngày còn lại đến một sự kiện quan trọng.

Các phương thức lấy ngày tháng phổ biến

JavaScript cung cấp nhiều phương thức trong đối tượng Date để lấy các giá trị ngày tháng cụ thể, bao gồm:

  • getFullYear() – Lấy năm.
  • getMonth() – Lấy tháng (0 - 11).
  • getDate() – Lấy ngày trong tháng (1 - 31).
  • getDay() – Lấy ngày trong tuần (0 - Chủ Nhật, 6 - Thứ Bảy).
  • getHours(), getMinutes(), getSeconds(), getMilliseconds() – Lấy giờ, phút, giây, mili-giây.
  • getTime() – Lấy timestamp (số mili-giây tính từ ngày 01/01/1970).

Những phương thức này sẽ được phân tích chi tiết trong các phần tiếp theo để giúp bạn hiểu rõ cách sử dụng chúng hiệu quả!

Lấy ngày, tháng, năm từ đối tượng Date trong JavaScript

Trong JavaScript, đối tượng Date cung cấp các phương thức để lấy thông tin về ngày, tháng, năm. Dưới đây là chi tiết về các phương thức này cùng với ví dụ minh họa.

Lấy năm bằng getFullYear()

Phương thức getFullYear() trả về giá trị năm của đối tượng Date dưới dạng số nguyên có bốn chữ số (YYYY).

Cú pháp:

dateObject.getFullYear();

Ví dụ:

let today = new Date();  
console.log(today.getFullYear()); // Ví dụ: 2025

Lấy tháng bằng getMonth()

Phương thức getMonth() trả về chỉ số của tháng, trong đó tháng 1 có giá trị là 0, tháng 12 có giá trị là 11. Vì vậy, cần +1 để hiển thị đúng tháng thực tế.

Cú pháp:

dateObject.getMonth();

Ví dụ:

let today = new Date();  
console.log(today.getMonth() + 1); // Ví dụ: 2 (tháng 2)

Lấy ngày trong tháng bằng getDate()

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

Cú pháp:

dateObject.getDate();

Ví dụ:

let today = new Date();
console.log(today.getDate()); // Ví dụ: 26 (ngày 26)

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

Phương thức getDay() trả về chỉ số ngày trong tuần, trong đó:

  • 0 = Chủ Nhật
  • 1 = Thứ Hai
  • 2 = Thứ Ba
  • 3 = Thứ Tư
  • 4 = Thứ Năm
  • 5 = Thứ Sáu
  • 6 = Thứ Bảy

Cú pháp:

dateObject.getDay();
Ví dụ:
let today = new Date();
console.log(today.getDay()); // Ví dụ: 2 (Thứ Ba)
Nếu muốn hiển thị dưới dạng chữ thay vì số, có thể dùng mảng:
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()]); // Ví dụ: "Thứ Ba"

Lấy ngày tháng năm và hiển thị theo định dạng dd/mm/yyyy:

let today = new Date();

let day = today.getDate();
let month = today.getMonth() + 1; // Cộng thêm 1 để hiển thị đúng tháng
let year = today.getFullYear();

console.log(`${day}/${month}/$2025`); // Ví dụ: "26/02/2025"

giờ, phút, giây từ đối tượng Date trong JavaScript

JavaScript cung cấp các phương thức để lấy thông tin về thời gian (giờ, phút, giây, mili-giây) từ đối tượng Date. Dưới đây là chi tiết về từng phương thức kèm ví dụ minh họa.

Lấy giờ bằng getHours()

Phương thức getHours() trả về giờ của đối tượng Date, với giá trị từ 0 đến 23 (định dạng 24 giờ).

Cú pháp:

dateObject.getHours();

Ví dụ:

let now = new Date();
console.log(now.getHours()); // Ví dụ: 14 (tức 2 giờ chiều)

Lấy phút bằng getMinutes()

Phương thức getMinutes() trả về số phút hiện tại, với giá trị từ 0 đến 59.

Cú pháp:

dateObject.getMinutes();

Ví dụ:

let now = new Date();
console.log(now.getMinutes()); // Ví dụ: 30 (tức 30 phút)

Lấy giây bằng getSeconds()

Phương thức getSeconds() trả về số giây hiện tại, với giá trị từ 0 đến 59.

Cú pháp:

dateObject.getSeconds();

Ví dụ:

let now = new Date();
console.log(now.getSeconds()); // Ví dụ: 45 (tức 45 giây)

Lấy mili-giây bằng getMilliseconds()

Phương thức getMilliseconds() trả về số mili-giây hiện tại, với giá trị từ 0 đến 999.

Cú pháp:

dateObject.getMilliseconds();

Ví dụ:

let now = new Date();
console.log(now.getMilliseconds()); // Ví dụ: 123 (tức 123 mili-giây)

Lấy và hiển thị giờ, phút, giây, mili-giây theo định dạng hh:mm:ss.sss

let now = new Date();

let hours = now.getHours();
let minutes = now.getMinutes();
let seconds = now.getSeconds();
let milliseconds = now.getMilliseconds();

console.log(`${hours}:${minutes}:${seconds}.${milliseconds}`); 
// Ví dụ: "14:30:45.123"

Định dạng thời gian 12 giờ (AM/PM)

Mặc định getHours() trả về giá trị từ 0 - 23. Để hiển thị giờ theo định dạng 12 giờ (AM/PM), có thể dùng:

let now = new Date();
let hours = now.getHours();
let minutes = now.getMinutes();
let seconds = now.getSeconds();

let period = hours >= 12 ? "PM" : "AM";
hours = hours % 12 || 12; // Chuyển đổi thành định dạng 12 giờ

console.log(`${hours}:${minutes}:${seconds} ${period}`);
// Ví dụ: "2:30:45 PM"

Lấy timestamp (dấu thời gian) của Date trong JavaScript

Timestamp là gì?

Timestamp (dấu thời gian) là số mili-giây tính từ 00:00:00 ngày 01/01/1970 (UTC), còn được gọi là Epoch time hoặc UNIX timestamp.
JavaScript cung cấp hai phương thức để lấy timestamp của một đối tượng Date:

  • getTime() – Trả về timestamp của đối tượng Date.
  • valueOf() – Tương tự getTime(), cũng trả về timestamp.

Lấy timestamp bằng getTime()

Phương thức getTime() trả về số mili-giây từ 01/01/1970 đến thời điểm hiện tại.

Cú pháp:

dateObject.getTime();

Ví dụ:

let now = new Date();
console.log(now.getTime()); // Ví dụ: 1708845600000

Lưu ý:
Giá trị trả về là một số nguyên lớn, đại diện cho thời gian tính bằng mili-giây.

Lấy timestamp bằng valueOf()

Phương thức valueOf() cũng trả về số mili-giây như getTime(), vì đối tượng Date sử dụng phương thức này khi cần chuyển đổi thành số.

Cú pháp:

dateObject.valueOf();
Ví dụ:
let now = new Date();
console.log(now.valueOf()); // Tương tự getTime(), ví dụ: 1708845600000

Điểm khác biệt:

  • getTime() là phương thức chính để lấy timestamp.
  • valueOf() được gọi ngầm khi Date được sử dụng trong các phép toán số học.

Ví dụ:

let date1 = new Date();
let date2 = new Date("2024-02-20");

console.log(date1 - date2); // Trả về số mili-giây giữa hai ngày

Ở đây, date1 - date2 sẽ tự động gọi valueOf() của cả hai đối tượng Date để thực hiện phép trừ.

Ứng dụng của timestamp trong JavaScript

So sánh hai mốc thời gian

Do timestamp là số nguyên, ta có thể so sánh hai mốc thời gian dễ dàng.

Ví dụ: Kiểm tra xem một sự kiện đã xảy ra hay chưa:

let now = new Date();
let eventTime = new Date("2024-12-31");

if (now.getTime() > eventTime.getTime()) {
    console.log("Sự kiện đã diễn ra.");
} else {
    console.log("Sự kiện chưa diễn ra.");
}

Tạo bộ đếm thời gian (Countdown Timer)

Timestamp giúp tính khoảng cách giữa hai thời điểm để tạo đồng hồ đếm ngược.

Ví dụ: Đếm ngược đến một sự kiện:

function countdown(targetDate) {
    let now = new Date().getTime();
    let eventTime = new Date(targetDate).getTime();
    let remainingTime = eventTime - now;

    let days = Math.floor(remainingTime / (1000 * 60 * 60 * 24));
    let hours = Math.floor((remainingTime % (1000 * 60 * 60 * 24)) / (1000 * 60 * 60));
    let minutes = Math.floor((remainingTime % (1000 * 60 * 60)) / (1000 * 60));
    let seconds = Math.floor((remainingTime % (1000 * 60)) / 1000);

    console.log(`Còn lại: ${days} ngày ${hours} giờ ${minutes} phút ${seconds} giây`);
}

countdown("2024-12-31T23:59:59");

Chuyển đổi sang UNIX timestamp (giây thay vì mili-giây)

Hầu hết hệ thống lưu trữ sử dụng UNIX timestamp tính theo giây thay vì mili-giây.

Để chuyển đổi:

let now = new Date();
let unixTimestamp = Math.floor(now.getTime() / 1000);
console.log(unixTimestamp); // Ví dụ: 1708845600

Ngược lại, để chuyển UNIX timestamp về Date:

let timestamp = 1708845600;
let date = new Date(timestamp * 1000);
console.log(date.toLocaleString()); // Hiển thị ngày giờ theo địa phương

Lấy ngày tháng theo chuẩn UTC (Giờ quốc tế) trong JavaScript

Khái niệm về UTC trong JavaScript

UTC (Coordinated Universal Time) là múi giờ chuẩn quốc tế, không bị ảnh hưởng bởi múi giờ địa phương hoặc quy ước giờ mùa hè (DST - Daylight Saving Time).

JavaScript hỗ trợ nhiều phương thức lấy ngày tháng theo UTC từ đối tượng Date, giúp đảm bảo tính đồng bộ thời gian trong các ứng dụng đa múi giờ.

Các phương thức lấy ngày tháng theo UTC

Lấy năm theo UTC – getUTCFullYear()

Phương thức này trả về năm theo chuẩn UTC.

Cú pháp:

dateObject.getUTCFullYear();

Ví dụ:

let date = new Date();
console.log(date.getFullYear());     // Năm theo múi giờ địa phương
console.log(date.getUTCFullYear());  // Năm theo chuẩn UTC

Lấy tháng theo UTC – getUTCMonth()

Phương thức này trả về tháng theo UTC (giá trị từ 0-11, tức tháng 1 là 0, tháng 12 là 11).

Cú pháp:

dateObject.getUTCMonth();

Ví dụ:

let date = new Date();
console.log(date.getMonth() + 1);     // Tháng theo múi giờ địa phương
console.log(date.getUTCMonth() + 1);  // Tháng theo chuẩn UTC

Lưu ý: Luôn +1 vì JavaScript đếm tháng từ 0 đến 11.

Lấy ngày theo UTC – getUTCDate()

Phương thức này trả về ngày trong tháng theo UTC (giá trị từ 1-31).

Cú pháp:

dateObject.getUTCDate();

Ví dụ:

let date = new Date();
console.log(date.getDate());     // Ngày theo múi giờ địa phương
console.log(date.getUTCDate());  // Ngày theo chuẩn UTC

Lấy ngày trong tuần theo UTC – getUTCDay()

Phương thức này trả về ngày trong tuần theo UTC (0 = Chủ Nhật, 6 = Thứ Bảy).

Cú pháp:

dateObject.getUTCDay();

Ví dụ:

let date = new Date();
console.log(date.getDay());     // Ngày trong tuần theo múi giờ địa phương
console.log(date.getUTCDay());  // Ngày trong tuần theo chuẩn UTC

Lưu ý: getUTCDay() trả về số nguyên từ 0 (Chủ Nhật) đến 6 (Thứ Bảy).


Lấy giờ, phút, giây theo UTC

Các phương thức này giúp lấy thời gian theo chuẩn UTC.

Phương thức Mô tả
getUTCHours() Lấy giờ theo UTC (0 - 23)
getUTCMinutes() Lấy phút theo UTC (0 - 59)
getUTCSeconds() Lấy giây theo UTC (0 - 59)
getUTCMilliseconds() Lấy mili-giây theo UTC (0 - 999)

Ví dụ:

let date = new Date();
console.log(date.getHours(), date.getMinutes(), date.getSeconds());    
// Giờ, phút, giây theo múi giờ địa phương

console.log(date.getUTCHours(), date.getUTCMinutes(), date.getUTCSeconds());  
// Giờ, phút, giây theo chuẩn UTC

Ứng dụng của UTC trong JavaScript

Lưu trữ thời gian trên hệ thống để tránh sai lệch múi giờ

Khi lưu trữ thời gian trên database, tốt nhất là lưu theo UTC, vì:
Không bị ảnh hưởng bởi múi giờ của người dùng.
Giúp dễ dàng chuyển đổi sang bất kỳ múi giờ nào khi cần.

Ví dụ: Lưu timestamp dưới dạng UTC khi người dùng tạo bài viết:

let createdAt = new Date().toISOString(); 
console.log(createdAt); // Ví dụ: "2024-02-26T14:30:00.000Z"

Chuỗi ISO 8601 luôn kết thúc bằng Z, thể hiện thời gian ở UTC.

Đồng bộ thời gian trong các ứng dụng quốc tế

Trong các hệ thống đa quốc gia, người dùng ở Việt Nam (GMT+7) có thể tương tác với người ở Mỹ (GMT-5).
Để hiển thị thời gian đúng cho từng người dùng, cần lưu trữ dữ liệu theo UTC và chuyển đổi khi hiển thị.

Ví dụ:

let utcDate = new Date("2024-02-26T14:30:00.000Z");
console.log(utcDate.toLocaleString("vi-VN", { timeZone: "Asia/Ho_Chi_Minh" }));
// Chuyển UTC sang múi giờ Việt Nam

Ứng dụng thực tế của các phương thức lấy ngày tháng trong JavaScript

JavaScript cung cấp nhiều phương thức để lấy ngày, tháng, năm, giờ, phút, giây từ đối tượng Date. Những phương thức này có nhiều ứng dụng quan trọng trong thực tế, đặc biệt là trong việc hiển thị thời gian, tạo bộ đếm ngược, và kiểm tra thời gian cho các sự kiện. Dưới đây là một số ứng dụng phổ biến.

Hiển thị ngày giờ hiện tại trên website

Mục đích:

  • Cập nhật thời gian theo thời gian thực.
  • Hiển thị thời gian theo múi giờ của người dùng.

Cách thực hiện:
Sử dụng các phương thức getFullYear(), getMonth(), getDate(), getHours(), getMinutes(), getSeconds() để lấy thời gian hiện tại.

Ví dụ: Hiển thị thời gian thực trên trang web và cập nhật mỗi giây.

function updateTime() {
    let now = new Date();
    let dateString = now.toLocaleString("vi-VN");
    
    document.getElementById("clock").innerText = dateString;
}

setInterval(updateTime, 1000); // Cập nhật mỗi giây

HTML để hiển thị:

<p id="clock"></p>

Kết quả: Hiển thị thời gian hiện tại của người dùng theo múi giờ của họ.

Đếm ngược thời gian cho sự kiện

Mục đích:

  • Hiển thị bộ đếm ngược cho các sự kiện như Black Friday, Tết, hội nghị, sinh nhật.
  • Nhắc nhở người dùng về thời gian còn lại.

Cách thực hiện:
Dùng getTime() để lấy timestamp của thời gian hiện tại và thời gian đích, sau đó tính số mili-giây còn lại.

Ví dụ: Đếm ngược đến Tết Nguyên Đán 2025.

function countdown() {
    let eventDate = new Date("2025-01-29T00:00:00"); // Tết Nguyên Đán 2025
    let now = new Date();
    
    let timeLeft = eventDate.getTime() - now.getTime(); // Thời gian còn lại (ms)
    
    let days = Math.floor(timeLeft / (1000 * 60 * 60 * 24));
    let hours = Math.floor((timeLeft % (1000 * 60 * 60 * 24)) / (1000 * 60 * 60));
    let minutes = Math.floor((timeLeft % (1000 * 60 * 60)) / (1000 * 60));
    let seconds = Math.floor((timeLeft % (1000 * 60)) / 1000);
    
    document.getElementById("countdown").innerText = `${days} ngày ${hours} giờ ${minutes} phút ${seconds} giây`;

    if (timeLeft <= 0) {
        document.getElementById("countdown").innerText = "Sự kiện đã diễn ra!";
    }
}

setInterval(countdown, 1000); // Cập nhật mỗi giây
HTML để hiển thị:
<p id="countdown"></p>

Kết quả: Bộ đếm ngược hiển thị thời gian còn lại đến Tết Nguyên Đán 2025.

Kết bài

Ngày tháng và thời gian đóng vai trò quan trọng trong hầu hết các ứng dụng web. JavaScript cung cấp nhiều phương thức mạnh mẽ để lấy thông tin ngày, tháng, năm, giờ, phút, giây cũng như timestamp của đối tượng Date. Những phương thức này giúp chúng ta hiển thị thời gian chính xác, tính toán khoảng cách giữa các mốc thời gian và thực hiện các tác vụ quan trọng như tạo bộ đếm ngược, kiểm tra thời gian đăng nhập, đặt lịch hẹn, nhắc nhở người dùng.

Việc sử dụng đúng các phương thức này không chỉ giúp ứng dụng hoạt động hiệu quả mà còn nâng cao trải nghiệm người dùng. Đặc biệt, khi kết hợp với các thư viện hỗ trợ như Moment.js hay date-fns, chúng ta có thể dễ dàng định dạng và xử lý ngày tháng theo nhiều múi giờ khác nhau.

Bài viết liên quan

  • 2