Cảm ơn bạn!
Tìm hiểu về Date và Time trong JavaScript
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.1970
có timestamp â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:
YYYY-MM-DD
: year-month-day.- Chữ cái "T" sử dụng làm dấu phân cách.
- HH:mm:ss.sss – là thời gian theo thứ tự: hours, minutes, seconds và milliseconds.
- 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.
- 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é. month
bắt đầu bằng 0 (tháng 1), đến 11 (tháng 12).date
là ngày trong tháng, nếu không có thì giá trị 1 được sử dụng.- 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: