JavaScript - Đối tượng Date: Khám phá Thời gian trong Mã của Bạn

Xin chào, các bạn đang theo đuổi lập trình! Hôm nay, chúng ta sẽ lặn sâu vào thế giới kỳ diệu của các ngày tháng trong JavaScript. Là người giáo viên khoa học máy tính gần gũi của bạn, tôi ở đây để hướng dẫn bạn qua những điều cơ bản và phức tạp của đối tượng Date. tin tôi đi, đến cuối bài học này, bạn sẽ xử lý các ngày tháng như một nghệ sĩ xiếc giàu kinh nghiệm!

JavaScript - Date

Đối tượng Date là gì?

Trước khi chúng ta nhảy vào chi tiết, hãy hiểu về đối tượng Date là gì. Trong JavaScript, đối tượng Date là công cụ hàng đầu của chúng ta để làm việc với ngày và giờ. Nó giống như một chiếc đồng hồ siêu thông minh ngay trong mã của bạn!

Hãy nghĩ như này: nếu chương trình của bạn cần biết giờ hiện tại, lên lịch sự kiện, hoặc tính toán thời gian một việc gì đó mất bao lâu, đối tượng Date là người bạn tốt nhất của bạn. Nó rất linh hoạt, thậm chí có thể告诉 bạn ngày trong tuần là gì vào ngày 4 tháng 7 năm 1776! (Đó là ngày thứ Năm, übrigens.)

Cú pháp: Tạo các Đối tượng Date

Hãy bắt đầu với những điều cơ bản. Làm thế nào chúng ta tạo một đối tượng Date? Đó là simpler hơn bạn nghĩ!

// Tạo một đối tượng Date mới với ngày và giờ hiện tại
let currentDate = new Date();
console.log(currentDate);
// Output: Gì đó như "Fri May 14 2023 15:30:45 GMT+0000 (Coordinated Universal Time)"

// Tạo một đối tượng Date cho một ngày và giờ cụ thể
let specificDate = new Date("2023-05-14T15:30:45");
console.log(specificDate);
// Output: "Sun May 14 2023 15:30:45 GMT+0000 (Coordinated Universal Time)"

// Tạo một đối tượng Date sử dụng các thành phần riêng lẻ
let customDate = new Date(2023, 4, 14, 15, 30, 45);
console.log(customDate);
// Output: "Sun May 14 2023 15:30:45 GMT+0000 (Coordinated Universal Time)"

Trong các ví dụ này, chúng ta đang tạo các đối tượng Date theo các cách khác nhau. Cách đầu tiên cho chúng ta ngày và giờ hiện tại, cách thứ hai tạo một ngày từ một chuỗi, và cách thứ ba cho phép chúng ta chỉ định từng phần của ngày một cách riêng lẻ.

Lưu ý, các tháng trong JavaScript được tính từ 0, có nghĩa là tháng 1 là 0, tháng 2 là 1, và vân vân. Đó giống như một trò đùa nội bộ giữa các nhà lập trình!

Đặc tính của Date

tin không phải, đối tượng Date không có bất kỳ thuộc tính công khai nào. Nó giống như một người bạn bí ẩn chỉ chia sẻ thông tin khi bạn hỏi nicely sử dụng các phương thức. Nhưng đừng lo lắng, chúng ta sẽ đến phần đó sớm!

Phương thức Date: Trích xuất Thông tin

Bây giờ, hãy xem xét một số phương thức giúp chúng ta trích xuất thông tin từ các đối tượng Date. Các phương thức này giống như những người du lịch thời gian, mang lại cho chúng ta các mảnh thông tin cụ thể.

let myDate = new Date("2023-05-14T15:30:45");

console.log(myDate.getFullYear()); // Output: 2023
console.log(myDate.getMonth()); // Output: 4 (Nhớ, tháng 5 là tháng thứ 5 nhưng chỉ mục là 4)
console.log(myDate.getDate()); // Output: 14
console.log(myDate.getDay()); // Output: 0 (0 là Chủ nhật, 1 là Thứ hai, v.v.)
console.log(myDate.getHours()); // Output: 15
console.log(myDate.getMinutes()); // Output: 30
console.log(myDate.getSeconds()); // Output: 45

Mỗi phương thức này trích xuất một phần cụ thể của ngày. Nó giống như hỏi bạn của bạn, "Hey, năm nào rồi?" hoặc "Ngày trong tuần là gì?" và nhận được một câu trả lời chính xác.

Phương thức Date: Đặt Thông tin

Cũng như chúng ta có thể lấy thông tin, chúng ta cũng có thể đặt nó. Các phương thức này cho phép chúng ta thay đổi các đối tượng Date.

let myDate = new Date("2023-05-14T15:30:45");

myDate.setFullYear(2024);
console.log(myDate); // Output: Tue May 14 2024 15:30:45 GMT+0000 (Coordinated Universal Time)

myDate.setMonth(11); // December
console.log(myDate); // Output: Sat Dec 14 2024 15:30:45 GMT+0000 (Coordinated Universal Time)

myDate.setDate(25);
console.log(myDate); // Output: Wed Dec 25 2024 15:30:45 GMT+0000 (Coordinated Universal Time)

Các phương thức này giống như một cỗ máy thời gian. Chúng ta có thể nhảy đến các năm, tháng, hoặc ngày khác nhau chỉ với một lệnh đơn giản!

Phương thức Tĩnh của Date

Các phương thức tĩnh là các phương thức đặc biệt thuộc về đối tượng Date itself, không phải các đối tượng Date cá nhân. Chúng giống như những ngườielder thông thái của bộ tộc Date, cung cấp dịch vụ quý giá cho tất cả.

console.log(Date.now()); // Output: Mã thời gian hiện tại theo милисекунди
console.log(Date.parse("2023-05-14")); // Output: Mã thời gian cho ngày 14 tháng 5 năm 2023

Date.now() cho chúng ta mã thời gian hiện tại, trong khi Date.parse() chuyển đổi một chuỗi ngày thành mã thời gian. Các phương thức này rất hữu ích cho các phép toán và so sánh.

Kết hợp tất cả lại: Ví dụ

Bây giờ chúng ta đã học về các khía cạnh khác nhau của đối tượng Date, hãy xem chúng ta có thể sử dụng chúng trong các tình huống thực tế như thế nào.

Ví dụ 1: Máy tính Tuổi

function calculateAge(birthDate) {
let today = new Date();
let birthDateObj = new Date(birthDate);
let age = today.getFullYear() - birthDateObj.getFullYear();
let monthDiff = today.getMonth() - birthDateObj.getMonth();

if (monthDiff < 0 || (monthDiff === 0 && today.getDate() < birthDateObj.getDate())) {
age--;
}

return age;
}

console.log(calculateAge("1990-05-14")); // Output sẽ phụ thuộc vào ngày hiện tại

Hàm này tính tuổi của một người dựa trên ngày sinh của họ. Nó tính toán tháng và ngày để đảm bảo độ chính xác.

Ví dụ 2: Đếm ngược

function countdown(targetDate) {
let now = new Date().getTime();
let target = new Date(targetDate).getTime();
let difference = target - now;

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

console.log(`${days} ngày, ${hours} giờ, ${minutes} phút, ${seconds} giây`);
}

countdown("2023-12-31"); // Đếm ngược đến Lễ hội năm mới

Hàm này tạo một đếm ngược đến một ngày cụ thể, hiển thị số ngày, giờ, phút và giây còn lại.

Bảng các phương thức Date

Dưới đây là bảng các phương thức Date thường được sử dụng:

Phương thức Mô tả
getFullYear() Lấy năm (4 chữ số)
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-6)
getHours() Lấy giờ (0-23)
getMinutes() Lấy phút (0-59)
getSeconds() Lấy giây (0-59)
setFullYear() Đặt năm
setMonth() Đặt tháng
setDate() Đặt ngày trong tháng
setHours() Đặt giờ
setMinutes() Đặt phút
setSeconds() Đặt giây
toDateString() Chuyển đổi ngày thành chuỗi đọc được
toTimeString() Chuyển đổi giờ thành chuỗi đọc được

Và thế là bạn đã bước vào thế giới của các ngày tháng trong JavaScript. Hãy nhớ, thực hành làm cho hoàn hảo, vì vậy đừng ngần ngại thử nghiệm với các phương thức này và tạo ra các dự án dựa trên ngày của riêng bạn. Ai biết, bạn có thể sẽ tạo ra ứng dụng lịch tiếp theo lớn! Khi kết thúc, hãy luôn nhớ rằng làm việc với ngày tháng đôi khi có thể khó khăn do múi giờ và giờ mùa hè. Nhưng với kiến thức bạn đã học hôm nay, bạn đã sẵn sàng đối mặt với những thử thách này. Hãy tiếp tục lập trình, tiếp tục học hỏi, và quan trọng nhất, hãy vui vẻ với nó!

Credits: Image by storyset