TypeScript - Đối tượng Date: Hướng dẫn cho người mới bắt đầu

Xin chào bạn, ngôi sao lập trình tương lai! Hôm nay, chúng ta sẽ bắt đầu một hành trình thú vị vào thế giới các đối tượng ngày trong TypeScript. Đừng lo lắng nếu bạn chưa từng viết một dòng mã trước đây - tôi sẽ là người hướng dẫn thân thiện của bạn, và chúng ta sẽ cùng nhau bước qua từng bước. Cuối cùng của bài hướng dẫn này, bạn sẽ manipulates các ngày như một chuyên gia!

TypeScript - Date Object

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

Trước khi chúng ta đi sâu vào chi tiết, hãy nói về đối tượng Date thực sự là gì. Trong TypeScript (và JavaScript), một đối tượng Date đại diện cho một khoảnh khắc duy nhất trong thời gian. Nó giống như một bức ảnh chụp của một ngày và giờ cụ thể, mà chúng ta có thể manipulates và sử dụng trong các chương trình của mình.

Hãy tưởng tượng nó như một chiếc đồng hồ kỹ thuật số mà bạn có thể đặt bất kỳ thời gian nào bạn muốn, quá khứ, hiện tại hoặc tương lai. Đ酷, phải không?

Cú pháp: Tạo một đối tượng Date

Bây giờ, hãy xem cách chúng ta có thể tạo một đối tượng Date trong TypeScript. Có nhiều cách để làm điều này, và tôi sẽ chỉ cho bạn từng cách với các ví dụ.

1. Ngày và giờ hiện tại

Để tạo một đối tượng Date với ngày và giờ hiện tại, bạn chỉ cần sử dụng cấu tử new Date() mà không cần bất kỳ tham số nào.

let currentDate = new Date();
console.log(currentDate);

Nếu bạn chạy đoạn mã này, bạn sẽ thấy gì đó như:

2023-06-15T12:30:45.678Z

Điều này có thể看起来 một chút rắc rối, nhưng đừng lo lắng! Nó chỉ hiển thị ngày và giờ hiện tại trong một định dạng tiêu chuẩn.

2. Ngày và giờ cụ thể

Bạn cũng có thể tạo một đối tượng Date cho một ngày và giờ cụ thể. Có nhiều cách để làm điều này:

a. Sử dụng chuỗi ngày

let christmas = new Date("December 25, 2023 00:00:00");
console.log(christmas);

Điều này sẽ đầu ra:

2023-12-25T00:00:00.000Z

b. Sử dụng các tham số riêng lẻ

let newYear = new Date(2024, 0, 1, 0, 0, 0);
console.log(newYear);

Điều này sẽ đầu ra:

2024-01-01T00:00:00.000Z

Lưu ý rằng tháng là 0 cho tháng Một. Trong JavaScript và TypeScript, tháng được đánh số từ 0, có nghĩa là tháng Một là 0, tháng Hai là 1, và vân vân. Đây là một đặc điểm nhỏ mà nhiều người mới bắt đầu thường gặp phải, vì vậy hãy nhớ nó!

c. Sử dụng số milliseconds kể từ epoch

Bạn cũng có thể tạo một ngày bằng cách chỉ định số milliseconds kể từ ngày 1 tháng 1 năm 1970 (được gọi là "epoch"):

let someDate = new Date(1687012345678);
console.log(someDate);

Điều này sẽ đầu ra một ngày và giờ tương ứng với số milliseconds sau epoch.

Làm việc với các đối tượng Date

Bây giờ chúng ta đã biết cách tạo các đối tượng Date, hãy xem xét một số điều chúng ta có thể làm với chúng.

Lấy các thành phần của ngày

Đối tượng Date có một số phương thức để lấy các thành phần khác nhau của ngày:

let today = new Date();

console.log("Full Year:", today.getFullYear());
console.log("Month:", today.getMonth());
console.log("Date:", today.getDate());
console.log("Day:", today.getDay());
console.log("Hours:", today.getHours());
console.log("Minutes:", today.getMinutes());
console.log("Seconds:", today.getSeconds());

Điều này có thể đầu ra điều gì đó như:

Full Year: 2023
Month: 5
Date: 15
Day: 4
Hours: 12
Minutes: 45
Seconds: 30

Nhớ rằng getMonth() trả về một tháng đánh số từ 0, vì vậy 5 có nghĩa là tháng Sáu!

Đặt các thành phần của ngày

Cũng như chúng ta có thể lấy các thành phần của ngày, chúng ta cũng có thể đặt chúng:

let futureDate = new Date();

futureDate.setFullYear(2025);
futureDate.setMonth(11);  // Tháng Mười Hai
futureDate.setDate(31);
futureDate.setHours(23);
futureDate.setMinutes(59);
futureDate.setSeconds(59);

console.log(futureDate);

Điều này sẽ đặt ngày thành ngày 31 tháng 12 năm 2025, vào lúc 23:59:59.

Định dạng ngày

TypeScript (và JavaScript) cung cấp một số phương thức tích hợp để định dạng ngày:

let event = new Date("July 4, 2023 12:00:00");

console.log(event.toDateString());
console.log(event.toTimeString());
console.log(event.toLocaleDateString());
console.log(event.toLocaleTimeString());
console.log(event.toISOString());

Điều này sẽ đầu ra:

Tue Jul 04 2023
12:00:00 GMT+0000 (Coordinated Universal Time)
7/4/2023
12:00:00 PM
2023-07-04T12:00:00.000Z

Toán học với các đối tượng Date

Một trong những điều thú vị nhất về các đối tượng Date là chúng ta có thể thực hiện toán học với chúng! Hãy xem một vài ví dụ:

Thêm ngày

let today = new Date();
let nextWeek = new Date(today.getTime() + 7 * 24 * 60 * 60 * 1000);

console.log("Today:", today);
console.log("Next week:", nextWeek);

Điều này thêm 7 ngày vào ngày hiện tại. Chúng ta nhân 7 (ngày) với 24 (giờ) với 60 (phút) với 60 (giây) với 1000 (millisecond) để có số milliseconds trong một tuần.

Trừ ngày

Chúng ta cũng có thể tìm sự khác biệt giữa hai ngày:

let start = new Date("March 1, 2023");
let end = new Date("June 15, 2023");

let difference = end.getTime() - start.getTime();
let days = Math.floor(difference / (24 * 60 * 60 * 1000));

console.log(`There are ${days} days between ${start.toDateString()} and ${end.toDateString()}`);

Điều này sẽ tính toán số ngày giữa ngày 1 tháng 3 năm 2023 và ngày 15 tháng 6 năm 2023.

Kết luận

Chúc mừng! Bạn đã刚刚 bước vào thế giới các đối tượng Date trong TypeScript. Chúng ta đã cùng nhau bao gồm việc tạo ngày, lấy và đặt các thành phần của ngày, định dạng ngày, và thậm chí thực hiện toán học với các ngày.

Nhớ rằng việc làm việc với ngày đôi khi có thể phức tạp, đặc biệt là khi xử lý các múi giờ khác nhau hoặc giờ mùa hè. Nhưng với sự luyện tập, bạn sẽ trở nên thoải mái và thành thạo hơn.

Dưới đây là bảng tóm tắt các phương thức chính chúng ta đã bao gồm:

Phương thức Mô tả
new Date() Tạo một đối tượng Date mới
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() Trả về phần ngày dưới dạng chuỗi dễ đọc
toTimeString() Trả về phần giờ dưới dạng chuỗi dễ đọc
toLocaleDateString() Trả về phần ngày theo phong tục địa phương
toLocaleTimeString() Trả về phần giờ theo phong tục địa phương
toISOString() Trả về ngày theo định dạng ISO

Tiếp tục luyện tập, tiếp tục lập trình, và quan trọng nhất, hãy vui vẻ! Thế giới lập trình đầy những khả năng thú vị, và việc thành thạo ngày chỉ là bước đầu. Chúc bạn lập trình vui vẻ!

Credits: Image by storyset