Hi 🤓 Cảm ơn bạn đã ghé thăm blog này, nếu những bài viết trên blog giúp ích cho bạn. Bạn có thể giúp blog hiển thị quảng cáo bằng cách tạm ngừng ad blocker 😫 và để giúp blog duy trì hoạt động nếu bạn muốn.
Cảm ơn bạn!

Date và time trong JavaScript

Chào các bạn, lại là homiedev đây, trong bài viết này chúng ta sẽ tìm hiểu về một built-in object: Date. Date trong JavaScript cung cấp thông tin date/time và các method cho chúng ta xử lý những thứ liên quan đến date/time.

Ví dụ: chúng ta có thể sử dụng nó để lưu thời gian tạo / sửa đổi hoặc lấy thông tin ngày hiện tại...

Tạo object Date

Để tạo một object Date mới, chúng ta sử dụng new Date() với một trong các đối số sau:

new Date(): Không có đối số - tạo object Date với date và time hiện tại.

let now = new Date();
alert(now); // hiện date và time hiện tại

new Date(milliseconds): Tạo object Date chứa một số milliseconds (mili giây) (1/1000 giây) tính từ ngày 1 tháng 1 năm 1970 theo giờ UTC.

// 0 nghĩa là 01.01.1970 UTC+0
let Jan01_1970 = new Date(0);
alert(Jan01_1970);

// 24 giờ sau
let Jan02_1970 = new Date(24 * 3600 * 1000);
alert(Jan02_1970); // 02.01.1970 UTC+0

Các ngày trước 01.01.1970timestamp âm (new Date(timestamp)), ví dụ:

let Dec31_1969 = new Date(-24 * 3600 * 1000);
alert(Dec31_1969); // 31 Dec 1969

new Date(datestring): Nếu có một đối số được truyền vào và là một chuỗi thì nó sẽ tự động phân tích cú pháp (parsed automatically).

Chúng ta nên sử dụng datestring có dạng YYYY-MM-DDTHH:mm:ss.sssZ, đây là chuẩn ISO 8601:

  1. YYYY-MM-DD: year-month-day.
  2. Chữ cái "T" sử dụng làm dấu phân cách.
  3. HH:mm:ss.sss – là thời gian theo thứ tự: hours, minutes, seconds và milliseconds.
  4. Chữ cái "Z" (optional) biểu thị múi giờ (time zone) ở định dạng +-hh:mm. Một chữ cái Z có nghĩa là UTC + 0.

Chúng ta có thể sử dụng các biến thể ngắn hơn, như YYYY-MM-DD, YYYY-MM hay YYYY.

let date = new Date("2000-02-29");
alert(date); // Tue Feb 29 2000 07:00:00 GMT+0700

Ở đoạn code trên, nếu ta không thêm vào time, nó sẽ được giả định là 00:00:00 theo múi giờ GMT (Greenwich Mean Time - GMT +00:00).

Thuật ngữ 'GMT' cũng được sử dụng làm một trong những tên gọi của múi giờ UTC +00:00.

Khi ta chạy đoạn code trên thì, giá trị time sẽ được điều chỉnh theo múi giờ nơi code được chạy.

new Date(year, month, date, hours, minutes, seconds, ms): tạo một object Date với date và time cụ thể.

Với dạng này thì 2 đối số đầu tiên là bắt buộc.

  1. Giá trị year nên có 4 chữ số. Chúng ta có thể truyền 2 chữ số và nó sẽ là 19xx, ví dụ: truyền 89 sẽ thành 1989, nhưng chúng ta nên sử dụng 4 chữ số để dễ đọc, dễ hiểu hơn nhé.
  2. month bắt đầu bằng 0 (tháng 1), đến 11 (tháng 12).
  3. date là ngày trong tháng, nếu không có thì giá trị 1 được sử dụng.
  4. Nếu không có hours/minutes/seconds/ms thì chúng được coi là bằng 0.

Ví dụ:

new Date(2022, 2, 28, 0, 0, 0, 0); // Mon Mar 28 2022 00:00:00 GMT+0700 
new Date(2022, 2, 28); // kết quả giống như trên

JavaScript Date Methods

Có nhiều method trong object Date của JavaScript. Các bạn có thể xem ở bảng dưới đây:

Method Mô tả
now() Trả về giá trị số tương ứng với thời gian hiện tại (số mili giây đã trôi qua kể từ ngày 1 tháng 1 năm 1970 00:00:00 UTC)
getFullYear() Lấy năm theo giờ địa phương (local time)
getMonth() Lấy tháng, từ 0 đến 11 (local time)
getDate() Lấy ngày trong tháng (1–31) (local time)
getDay() Lấy ngày trong tuần (0-6) (local time)
getHours() Lấy giờ từ 0 đến 23 (local time)
getMinutes() Lấy phút từ 0 đến 59 (local time)
getUTCDate() Lấy ngày trong tháng (1–31) theo universal time
setFullYear() Đặt năm (local time)
setMonth() Đặt tháng (local time)
setDate() Đặt ngày trong tháng (local time)
setUTCDate() Đặt ngày trong tháng theo universal time

Ví dụ sử dụng Date method:

const timeInMilliseconds = Date.now();
console.log(timeInMilliseconds); // 1664849466520

const time = new Date;

// lấy ngày trong tháng
const date = time.getDate();
console.log(date); // 4

// lấy năm
const year = time.getFullYear();
console.log(year); // 2022

const event = new Date('Oct 04, 2022 09:14:30');
// đặt lại ngày
event.setDate(5);
console.log(event.getDate()); // 5

Autocorrection

Autocorrection là một tính năng rất tiện dụng của object Date. Chúng ta có thể đặt các giá trị nằm ngoài phạm vi và nó sẽ tự động điều chỉnh.

let date = new Date(2022, 0, 35); // tháng 1 có 31 ngày
console.log(date); // Fri Feb 04 2022 00:00:00 GMT+0700

Các thành phần ngày nằm ngoài phạm vi được phân phối tự động.

Giả sử chúng ta cần tăng ngày "28 tháng 2 năm 2020" lên 2 ngày. Nó có thể là "2 tháng 3" hoặc "1 tháng 3" trong trường hợp năm nhuận. Chúng ta không cần quan tâm quá trường hợp này. Chỉ cần thêm 2 ngày, Date sẽ thực hiện phần còn lại 😁:

let date = new Date(2020, 1, 28);
date.setDate(date.getDate() + 2);

console.log(date); // Sun Mar 01 2020 00:00:00 GMT+0700

🎉 Như vậy là chúng ta đã tìm hiểu về Date và Time trong JavaScript. Hi vọng bài viết giúp ích cho các bạn.

Chúng ta sẽ gặp lại nhau trong bài viết sắp tới nhé!

Bài viết liên quan:

  1. Intl trong JavaScript là gì? Cách sử dụng Intl thông qua ví dụ
Có thể bạn thích ⚡
homiedev
About Me

Hi, I'm @devnav. Một người thích chia sẻ kiến thức, đặc biệt là về Frontend 🚀. Trang web này được tạo ra nhằm giúp các bạn học Frontend hiệu quả hơn 🎉😄.

Chúc các bạn tìm được kiến thức hữu ích trong blog này 😁😁.