Để lấy định dạng dấu thời gian JavaScript có thể đạt được bằng đối tượng Date(), giữ thời gian hiện tại ở định dạng dấu thời gian đọc được. Bạn cũng có thể tạo đối tượng Date() mới với dấu thời gian khác, và lấy thời gian Unix hiện tại dùng phương thức getTime().
Quản lý ngày và giờ là phần quan trọng của lập trình. Trong JavaScript, ví dụ, bạn có thể tạo ngày bản quyền động, lịch trình, hoặc danh sách sự kiện và thời gian, tất cả liên quan đến thời gian/ngày.
Để làm việc với thời gian trong JavaScript, bạn dùng đối tượng Date và phương thức liên quan. Đối tượng Date cho phép lưu ngày và giờ, và định dạng ngày/giờ dựa trên nhu cầu cụ thể.
Trong hướng dẫn này, chúng ta sẽ khám phá cơ bản tạo dấu thời gian JavaScript dùng Date. Chúng ta cũng thảo luận cách định dạng ngày và dấu thời gian trong JavaScript, và cách lấy giá trị thời gian UTC.
Đối tượng dấu thời gian JavaScript
Đối tượng Date dùng trong JavaScript lưu ngày và giờ. Không có đối số, đối tượng Date tạo đối tượng với ngày và giờ hiện tại. Ví dụ dùng Date lấy ngày/giờ hiện tại:
const currentTime = new Date(); console.log(currentTime);
Trong mã, khai báo biến "currentTime", gán đối tượng Date. Sau đó in biến "currentTime" ra console. Mã trả về:
Wed Feb 05 2020 11:18:21 GMT+0000 (Greenwich Mean Time)
Như thấy, mã trả về ngày/giờ hiện tại theo cách chúng ta đọc được. Chúng ta phân tích kết quả đối tượng Date thành vài thành phần:
81% of participants stated they felt more confident about their tech job prospects after attending a bootcamp. Get matched to a bootcamp today.
The average bootcamp grad spent less than six months in career transition, from starting a bootcamp to finding their first job.
- Thứ: Wed
- Tháng: Feb
- Ngày: 14
- Năm: 2020
- Giờ: 11
- Phút: 18
- Giây: 21
- Múi giờ: GMT+000 (Greenwich Mean Time)
Tuy nhiên, trong khi đối tượng date trả về giá trị này, JavaScript hiểu ngày/giờ qua thời gian Unix. Thời gian Unix là giá trị đại diện số mili giây trôi qua kể từ nửa đêm 1 tháng 1 năm 1970, là tiêu chuẩn phổ biến lưu thời gian trong lập trình.
Nếu muốn truy xuất dấu thời gian Unix JavaScript, làm bằng phương thức getTime() như sau:
console.log(currentTime.getTime());
Mã trả về: 1580901774643. Mặc dù con số này không đẹp như thông tin trên, nó có nghĩa chính xác như vậy.
Tạo đối tượng Date mới từ dấu thời gian hiện có
Cho đến nay, thảo luận tạo đối tượng Date dựa trên thời gian hiện tại. Tuy nhiên, cũng có thể tạo đối tượng Date dựa trên dấu thời gian JavaScript hiện có.
Điều này hữu ích nếu bạn đã có giá trị ngày, nhưng muốn thao tác dùng đối tượng JS Date. Ví dụ, bạn có dấu thời gian Unix muốn hiển thị dạng dài như trên (hiển thị thứ, thời gian, múi giờ, thông tin liên quan).
Bạn có thể tạo đối tượng Date mới từ dấu thời gian hiện có theo vài cách. Dùng Date tạo đối tượng mới dựa trên:
- Dấu thời gian Unix hiện có (new Date(timestamp))
- Chuỗi ngày (new Date(date string))
- Ngày và giờ cụ thể (new Date(year, month, day, hours, minutes, seconds, milliseconds))
Ví dụ mỗi phương pháp:
new Date(9231925020);
new Date("April 17 1970 21:25:25");
new Date(1970, 3, 17, 21, 25, 25, 0);
Mỗi ví dụ tạo đối tượng Date dùng cùng thông tin. Vì vậy, nếu in thời gian dùng bất kỳ đối tượng date nào và hàm getTime() như trước, nhận được phản hồi:
Fri Apr 17 1970 21:25:25 GMT+0100 (Greenwich Mean Time)
Lưu ý, trong phương pháp cuối - chỉ định năm, tháng, ngày, giờ, phút, giây, mili giây - bất kỳ giá trị thiếu nào sẽ đặt thành 0. Thêm vào đó, tháng đặt là "3" vì đối tượng Date JavaScript đếm từ "0" cho tháng.
Truy xuất ngày
Bây giờ có đối tượng Date, chúng ta truy xuất bất kỳ phần nào của ngày/giờ cần. Dùng phương thức get trong JavaScript trả về phần ngày/giờ liên quan đến múi giờ cục bộ. Dưới đây phương thức date lấy ngày:
- Năm: getFullYear()
- Tháng: getMonth()
- Ngày trong tháng: getDate()
- Thứ trong tuần: getDay()
- Giờ: getHours()
- Phút: getMinutes()
- Giây: getSeconds()
- Mili giây: getMilliseconds()
Tạo đối tượng date mới cho 1 tháng 1, 2020:
const january2020 = new Date(2020, 1, 1);
Bây giờ, dùng phương thức trên lấy năm, tháng, ngày trong tháng, nhận được:
january2020.getFullYear(); // 1980 january2020.getMonth(); 1 january2020.getDate(); 1
Chúng ta chạy bất kỳ phương thức date nào thảo luận trước trên dấu thời gian để lấy phần thời gian cụ thể.
Thêm vào đó, dùng đối tượng Date so sánh thời gian trong JavaScript. Vì vậy, nếu muốn xem có phải 2020 không, dùng mã:
const currentDate = new Date(); if (currentDate.getFullYear() === 2020) { console.log("Đang là năm 2020!"); } else { console.log("Không phải năm 2020!"); }
Vì đang là 2020 khi bài viết này được viết, mã trả về: "Đang là năm 2020!" Chúng ta cũng có thể thực hiện so sánh nâng cao hơn, như so sánh năm và ngày dùng cách tương tự.
Phương thức UTC
Giá trị trả về bởi hàm truy xuất ngày thảo luận trên dựa trên cài đặt múi giờ cục bộ. Nếu muốn dấu thời gian UTC - tính toán dựa trên Thời gian Phổ biến Điều phối - bạn thêm "UTC" sau từ "get" trong các hàm trên.
Ví dụ phương thức getHours() và getUTCHours() lấy giờ hiện tại và giờ múi giờ UTC:
const currentDate = new Date(); console.log(currentDate.getHours()); console.log(currentDate.getUTCHours());
Mã trả về:
11
11
Mã in cả giờ múi giờ hiện tại và giờ UTC. Nếu bạn hiện ở UTC, hai số giống nhau (như trên).
Dùng UTC hữu ích vì là tiêu chuẩn quốc tế chấp nhận, thường dùng khi tạo trang web/app phụ thuộc nhiều múi giờ.
Kết luận
Thời gian là phần quan trọng của JavaScript bạn sẽ gặp thường xuyên khi code. Trong hướng dẫn, thảo luận cách tạo đối tượng Date lưu thời gian hiện tại. Cũng thảo luận tạo đối tượng Date tùy chỉnh dựa trên dấu thời gian, chuỗi ngày, và thời gian cụ thể, khám phá phương thức truy xuất ngày tích hợp trong JavaScript.
Bây giờ bạn trang bị kỹ năng truy xuất và thao tác dấu thời gian trong JavaScript như chuyên gia!