Không thể tránh khỏi đồng hồ, đặc biệt trong lập trình. Cách chúng ta dựa vào đồng hồ để theo dõi ngày, chương trình cũng dùng công cụ theo dõi thời gian để biết điều gì nên xảy ra và khi nào.
Một số ứng dụng cần theo dõi thời gian. Ứng dụng blog cần nhớ khi nào bài đăng được tạo, ứng dụng lịch hiển thị sự kiện đã lên lịch.
Trong hướng dẫn này, chúng ta thảo luận cách làm việc với ngày và giờ trong JavaScript. Chúng ta sẽ đi qua vài ví dụ minh họa cách làm việc với các công cụ này.
Đối Tượng Date Trong JavaScript Là Gì?
Để làm việc với thời gian trong JavaScript, chúng ta dùng đối tượng Date. Đây là đối tượng đặc biệt lưu trữ ngày và giờ. Hơn nữa, đối tượng Date đi kèm nhiều phương thức để truy xuất thông tin cụ thể về ngày và giờ.
Đối tượng date trông như sau:
new Date();
Trong hướng dẫn, bạn nhận thấy Date viết hoa. Điều này vì Date là đối tượng tích hợp sẵn JavaScript. Bạn phải viết hoa Date để làm việc với đối tượng date.
Cách Sử Dụng Đối Tượng Date
Không có giá trị nào, đối tượng Date cho biết ngày và giờ hiện tại. Điều này tính dựa trên cài đặt hệ điều hành và múi giờ.
Chúng ta có thể dùng đối tượng Date truy xuất ngày hiện tại, như sau:
var currentDate = new Date(); console.log(currentDate);
Mã trả về đối tượng Date chứa các giá trị:
Wed Jun 24 2020 10:49:46 GMT+0100 (British Summer Time)
Như bạn thấy, bài viết này viết tại UK ngày 24/6/2020, như dấu thời gian cho thấy. Vẻ đẹp của đối tượng Date là trả về dữ liệu định dạng ngày dễ đọc cho con người.
Truy Xuất Dấu Thời Gian (Timestamp) Dùng Date
Mã trên dễ đọc đối với con người, nhưng có vấn đề — JavaScript hoạt động khác. Nó diễn giải ngày dùng dấu thời gian Unix. Dấu thời gian Unix đếm số giây trôi qua từ 1/1/1970. Đây là lúc thời gian Unix bắt đầu.
Để truy xuất thời gian hiện tại như dấu thời gian, dùng phương thức getTime():
var currentDate = new Date(); console.log(currentDate.getTime());
Mã trả về 1592992393313, số có thể diễn giải bởi JavaScript.
Tạo Đối Tượng Date
Giá trị mặc định đối tượng Date là ngày và giờ hiện tại. Bạn có thể thay đổi để tạo ngày dựa trên dấu thời gian cụ thể hoặc ngày giờ.
Bạn có thể làm bằng cách chỉ định dấu thời gian, chuỗi ngày, hoặc tập số tương ứng với ngày giờ hiện tại:
- new Date(timestamp)
- new Date(string)
- new Date(year, month, day, hours, minutes, seconds, milliseconds)
Giả sử muốn tạo dấu thời gian cho 1/1/2021. Có thể làm như sau:
var nextYear = new Date("January 1 2021 12:00"); console.log(nextYear);
Mã trả về: Fri Jan 01 2021 12:00:00 GMT+0000 (Greenwich Mean Time)
Chúng ta cũng có thể tạo dấu thời gian này dùng các dòng:
var nextYear = new Date(1609502400000); console.log(nextYear); var nextYear = new Date(2021, 1, 1, 0, 0, 0, 0); console.log(nextYear);
Mã trả về:
Fri Jan 01 2021 12:00:00 GMT+0000 (Greenwich Mean Time) Fri Jan 01 2021 12:00:00 GMT+0000 (Greenwich Mean Time)
Tất cả phương pháp tạo cùng đối tượng Date.
Truy Xuất Ngày
Đối tượng Date đi kèm mảng phương thức tích hợp để truy cập thông tin cụ thể về ngày. Các phương thức truy xuất thông tin ngày bắt đầu bằng get. Danh sách tham khảo:
- Năm: getFullYear()
- Tháng: getMonth() (giữa 0 và 11, 0 là tháng 1)
- Ngày trong tháng: getDate() (giữa 1 và 31)
- Ngày trong tuần: getDay() (giữa 0 và 6, Chủ nhật là 0)
- Giờ: getHours() (giữa 0 và 23, nửa đêm là 0)
- Phút: getMinutes()
- Giây: getSeconds()
- Mili giây: getMilliseconds()
- Dấu thời gian: getTime()
Giả sử muốn biết bây giờ là mấy giờ. Có thể làm như sau:
const currentDate = new Date(); console.log(currentDate.getHours());
Mã trả về 11. Điều này cho thấy hiện tại là 11 giờ vào ngày.
Các hàm này hữu ích vì giúp trích xuất thông tin cụ thể về ngày. Không cần lo thao tác chuỗi; chỉ dùng phương thức get để biết thêm về thời gian hiện tại.
Bạn có thể truy xuất dấu thời gian dùng Universal Time Coordinated (UTC) bằng cách thêm UTC giữa get và giá trị ngày. Mặc định, đối tượng Date trả về thông tin theo múi giờ địa phương. Nếu làm việc với người dùng nhiều múi giờ, thường tốt nhất dùng UTC theo dõi thời gian sự kiện xảy ra dễ dàng.
Cập Nhật Đối Tượng Date
Đối tượng Date có thể cập nhật dùng phương thức set của Date. Có phương thức set cho mỗi phương thức get:
- Năm: setFullYear()
- Tháng: setMonth()
- Ngày trong tháng: setDate()
- Ngày trong tuần: setDay()
- Giờ: setHours()
- Phút: setMinutes()
- Giây: setSeconds()
- Mili giây: setMilliseconds()
- Dấu thời gian: setTime()
Giả sử muốn biết ngày trong tuần vào ngày này năm ngoái. Có thể làm bằng cách đặt năm trên đối tượng Date thành 2019 dùng setFullYear(). Sau đó, dùng getDay() truy xuất ngày trong tuần:
const currentDate = new Date();
currentDate.setFullYear(2019);
const daysOfTheWeek = ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday', 'Sunday'];
const dayLastYear = currentDate.getDay();
console.log('On this day last year it was ' + daysOfTheWeek[dayLastYear]);
Mã trả về: On this day last year it was Tuesday.
Đầu tiên dùng Date() truy xuất ngày hiện tại. Sau đó dùng setFullYear() đặt năm trên đối tượng date thành 2019.
Tiếp theo, khai báo mảng daysOfTheWeek. Giúp chuyển số trả về bởi getDay() thành ngày trong tuần.
Sau đó dùng getDay() tìm ra ngày trong tuần lúc này năm 2019. Cuối cùng, in thông báo On this day last year it was theo sau ngày trong tuần.
Kết Luận
Dùng đối tượng Date bạn có thể làm việc với ngày và giờ trong JavaScript. Đối tượng Date đi kèm nhiều phương thức get giúp biết về thời gian hiện tại và set để thao tác đối tượng ngày giờ. Bây giờ bạn đã sẵn sàng làm việc với ngày và giờ trong JavaScript như chuyên gia!