Đối tượng Date trong JavaScript

Ngày đăng: 25/09/2020   -    Cập nhật: 29/09/2020


Bài học này mình sẽ giới thiệu các bạn đối tượng Date trong JavaScript. Đây là một đối tượng mà chúng ta rất thường sử dụng để xử lý ngày giờ khi lập trình web / app. Cùng theo dõi bài viết nào.

Đối tượng Date trong JavaScript

Đối tượng Date trong JavaScript
 

1. Date trong JavaScript là gì?


Date là một đối tượng được tính hợp sẵn (built-in object) chuyên dùng để xử lý ngày giờ, thời gian trong JavaScript và đương nhiên thời gian thì ứng dụng rất nhiều rồi.

Tất cả các vấn đề liên quan đến thời gian đều nằm trong đối tượng Date, cú pháp khởi tạo đối tượng Date như sau:



let timeObject = new Date();
 

Đây là cách thường được sử dụng bởi vì nó sẽ lấy thời gian hiện tại trên máy của người dùng, đều này có nghĩa mỗi người dùng sẽ có thời gian khác nhau, phụ thuộc vào lúc họ truy cập, thiết lập trên máy tính.

> Đọc thêm: Đối tượng trong JavaScript

Một số cách khởi tạo đối tượng Date khác:



// Tham số truyền vào là mili giây
let timeObject = new Date(milliseconds);

// Tham số truyền vào là chuỗi ngày tháng
let timeObject = new Date(dateString);

// Tham số truyền vào gồm
//  - year:         năm
//  - month:        tháng
//  - day:          ngày
//  - hours:        giờ
//  - minutes:      phút
//  - seconds:      giây
//  - milliseconds: mili giây
 
let timeObject = new Date(
    year,
    month,
    day,
    hours,
    minutes,
    seconds,
    milliseconds
);
 

> Lưu ý: Tham số year, month là bắt buộc. Các tham số khác thì là tùy chọn.

Ví dụ:



// Khởi tạo đối tượng với giá trị ngày là : 25/9/2020
var time = new Date(2020925);
console.log(time);
 

Bạn thử chạy chương trình xem, kết quả nhận được là gì?

2. Định dạng ngày tháng trong JavaScript (Format Date)


Nếu chúng ta không định dạng thì kết quả hiển thị ngày tháng như trên khá là khó hiểu.

Có 3 dạng ngày tháng chính thường sử dụng là: ISO, Long, Short, Full Date


  • ISO: “2020-09-25” (Tiêu chuẩn quốc tế: Năm – Tháng – Ngày). Dạng số
  • Long: “09/25/2020” hoặc “2020/09/25” (Tháng/Ngày/Năm hoặc Năm/Tháng/Ngày). Dạng số
  • Short: “Oct 25 2020” hoặc “25 Oct 2020” (Tháng Ngày Năm hoặc Ngày Tháng Năm). Tháng là ở dạng chữ
  • Full Date: “Friday October 25 2020” (Thứ Tháng Ngày Năm). Thứ và tháng là ở dạng chữ

2.1. Định dạng ngày tháng ISO


Định dạng ISO 8601 là tiêu chuẩn quốc tế diễn tả ngày tháng và thời gian

Cú pháp của ISO 8601 (YYYY-MM-DD) nó cũng khớp với định dạng ngày tháng của JavaScript

Ví dụ: Dạng ngày tháng đầy đủ:



let d = new Date("2020-09-25");
 

Các tính toán ngày tháng sẽ liên quan đến múi giờ của bạn. Phụ thuộc vào múi giờ của bạn, kết quả trên có thể biến thiên.

Nó có thể được viết mà không cần chỉ định ngày (YYYY-MM).

Ví dụ: Chỉ năm và tháng:



let d = new Date("2020-08");
 


Múi giờ có thể ảnh hưởng đến kết quả. Kết quả sẽ biến thiên nếu thời gian trong khoảng từ 30 tháng 9 đến 1 tháng 10.

Nó có thể được viết mà không chỉ định tháng (YYYY).

Ví dụ: Chỉ có năm:



let d = new Date("2020");
 

Múi giờ có thể ảnh hưởng đến kết quả trên. Nếu thời gian trong khoảng từ 31 tháng 12 2020 đến 1 tháng 1 năm 2021.

Nó cũng có thể viết thêm thông tin giờ, phút, giây (YYYY-MM-DDHH:MM:SS)

VÍ dụ: Dạng đầy đủ giờ, phút, giây.



let d = new Date("2020-09-27T00:00:00");
 


Chứ T trong chuỗi ngày tháng, nằm giữa ngày tháng và thời gian, là chỉ thời gian UTC (Universal Time Coordinated).

2.2. Định dạng shortDate


Kiểu ngày giờ Short được lưu trữ dưới dạng MM/DD/YYYY hoặc YYYY/MM/DD hoặc MM-DD-YYYY hoặc YYYY-MM-DD

Ví dụ:



let d_1 = new Date("09-25-2020");
let d_2 = new Date("09/25/2020");
let d_3 = new Date("2020/09/25");
let d_4 = new Date("2020-09-25");
 

2.3. Định dạng Long Date


Định dạng Long Date tức là bạn truyền vào với tên của tháng là ba chữ cái đầu tiên ghi bằng tiếng Anh, lúc này bạn có thể đặt vị trí của nó thế nào cũng được vì đối tượng Date tự nhận diện và chuyển đổi.

Ví dụ:



let d_1 = new Date("Oct 25 2020");
let d_2 = new Date("2020 Oct 25");
let d_3 = new Date("25 2020 Oct");
 

2.4. Định dạng đầy đủ (Full time)


JavaScript chấp nhận chuỗi ngày tháng trong định dạng JavaScript đầy đủ. Dạng này bạn phải truyền đầy đủ (Ngày Tháng Năm Giờ-Phút-Giây-Timezone)

Ví dụ:



let d = new Date("Fri Oct 25 2020 00:00:00 GMT+0700 (Giờ Đông Dương)");
 

3. Một số hàm xử lý ngày giờ trong JavaScript


Để thao tác xử lý ngày tháng trong JavaScript hiệu quả chúng ta có hai nhóm hàm chính là lấy dữ liệu ngày giờ (getDate) và thiết lập ngày giờ (setDate)

3.1. Nhóm hàm lấy dữ liệu ngày giờ trong JavaScript


Trong JavaScript có tổng cộng 10 hàm thiết lập thời gian thường sử dụng:

  • getDate() lấy ngày (1 - 31)
  • getDay() lấy ngày trong tuần (0 - 6).
  • getFullYear() lấy năm đầy đủ (YYYY)
  • getYear() lấy năm dạng rút gọn (Đã không còn sử dụng). Nó sẽ trả về giá trị năm hiện tại trừ đi năm 1900 (VD: Năm 2020 - 1900 bằng 120. Do đó, giá trị 120 sẽ được trả về). Khuyến nghị nên sử dụng getFullYear() thay thì getYear().
  • getHours() lấy số giờ (0 - 23)
  • getMiliSeconds() lấy số mili giây (0 - 999)
  • getMinutes() lấy số phút (0 - 59)
  • getMonth() lấy tháng (0 - 11)
  • getSeconds() lấy số giây (0 - 59)
  • getTime() thời gian đã được convert sang dạng miliseconds kể từ 1/1/1970.

Bạn không cần ghi nhớ hết mà có thể hiểu là có bao nhiêu dữ liệu ngày giờ thì có bấy nhiêu hàm để giúp chúng ta có thể lấy ra đúng dữ liệu ngày giờ đó.

Một số giá trị lấy ra như Tháng và Ngày trong tuần thì sẽ được đại diện bởi các số đếm từ 0 - 11 và từ 0 - 6.

Do đó, để có được ngày tháng đúng thì chúng ta sẽ tiếp tục xử lý, ví dụ:


  • getDay() trả về gia trị 0 thì tương đương Chủ Nhật, 1 tương đương Thứ Hai, 2 tương đương Thứ Ba
  • getMonth() trả về giá trị 0 thì tương đương Tháng 1

Nói chung thì cách sử dụng các hàm trên thì khá là đơn giản, nó là phương thức của đối tượng Date nên bạn chỉ việc gọi và sử dụng thôi.


// Tạo đối tượng Date time
let d = new Date();
 
// Lấy các giá trị của đối tượng vừa tạo
d.getDate();
d.getDay();
d.getFullYear();
d.getYear();
d.getHours();
d.getMilliseconds();
d.getMinutes();
d.getMonth();
d.getSeconds();
d.getTime();
 

Lưu ý: Các hàm getDay(), getYear(), getMonth() là sẽ hơi khác một chút so với luồng suy nghĩ thông thường. Do đó, hãy luyện tập để nắm bắt được rõ ràng hơn nhé.

3.2. Nhóm hàm thiết lập ngày giờ trong JavaScript


Tương ứng với mỗi hàm Get ta sẽ có 1 hàm Set (không có setDay() bạn nhé). Như vậy ta cũng có 9 hàm thiết lập ngày giờ mà JS cung cấp như sau:

  • setDate() thiết lập ngày (1 - 31)
  • setFullYear() thiết lập năm đầy đủ (YYYY). Chấp nhận 4 chữ số từ 1000 cho đến 9999.
  • setYear() thiết lậpnăm 2 số cuối (YY). Nhưng hiện tại đã không còn được sử dụng. Khuyến nghị nên sử dụng setFullYear() thay vì setYear()
  • setHours() thiết lập số giờ (0 - 23)
  • setMiliSeconds() thiết lập số mili giây (0 - 999)
  • setMinutes() thiết lập số phút (0 - 59)
  • setMonth() thiết lập tháng (0 - 11)
  • setSeconds() thiết lập số giây (0 - 59)
  • setTime() thiết lập thời gian đã được convert sang dạng miliseconds kể từ 1/1/1970.


Lưu ý:

  • Đây là hàm set nên bạn phải truyền tham số vào.
  • Các hàm sẽ ảnh hưởng lẫn nhau. Ví dụ, nếu bạn thiết lập ngày giờ không đúng nó sẽ lấy ngày giờ mặc định.
  • Nếu bạn dùng hàm setTime() để thiết lập thì nó ảnh hướng tới tất cả các giá trị còn lại bởi vì setTime() là hàm thiết lập thời gian đầy đủ đã chuyển sang dạng miliseconds.

Ví dụ:


// Tạo đối tượng thời gian hiện tại
let d = new Date();

// Thiết lập ngày giờ
d.setDate(25);
d.setFullYear(2020);
d.setHours(4);
d.setMilliseconds(1);
d.setMinutes(2);
d.setMonth(8);
d.setSeconds(3);
 

> Hãy tìm hiểu thêm về cách hàm xử lý thời gian tại Mozilla

Tổng kết


Như vậy, mình đã giới thiệu các bạn cơ bản về Date trong JavaScript, cách thiết lập ngày giờ cũng như một số lưu ý khi xử lý ngày giờ, nó cũng đơn giản đúng không nào.

Chúng ta rất thường sử dụng nó để xử lý khi lập trình web phía client nên bạn hãy chú ý về nó nhé. Hẹn gặp lại các bạn ở bài học tiếp theo.

> Nếu bạn thấy tự học tiến bộ chậm, tham khảo ngay: HỌC LẬP TRÌNH WEB (Full Stack) từ A - Z dành cho người mới bắt đầu học lập trình hoặc chuyển nghề.


Bình luận Facebook
Đăng ký tư vấn
Nhân viên gọi điện tư vấn miễn phí sau khi đăng ký
Được cập nhật các ưu đãi sớm nhất
Hotline: 0383180086
Tên không được để trống
Số điện thoại không được để trống
Email không được để trống
Hãy đăng ký để nhận những thông tin mới nhất về học bổng mới nhất tại NIIT - ICT Hà Nội
top
Đóng lại Đăng ký học tại NIIT - ICT Hà Nội
6260+ học viên đã theo học tại NIIT - ICT Hà Nội và có việc làm tốt trong ngành lập trình. Nắm lấy cơ hội ngay hôm nay!
Chọn khóa học
  • KHÓA HỌC LẬP TRÌNH FRONT END VỚI REACT.JS
  • KHÓA HỌC LẬP TRÌNH PHP WEB
  • Khóa học PHP Full stack [2023] cho người mới bắt đầu
  • Khóa học BIG DATA với Hadoop và Spark
  • Khóa học Lập trình Android tại Hà Nội
  • [Tuyển sinh 2023] Lập trình viên Quốc tế DigiNxt
  • Khóa học Tiền lương & Phúc lợi (C&B Excel) tại Hà Nội
  • LẬP TRÌNH GAME
    • Khóa học Lập trình Game Unity
  • LẬP TRÌNH WEB FRONT END
    • KHÓA HỌC PYTHON HƯỚNG ĐỐI TƯỢNG
    • KHÓA HỌC ANGULAR & TYPESCRIPT (FRONT END)
  • LẬP TRÌNH WEB BACK END
    • LẬP TRÌNH JAVA WEB VỚI FRAME WORK
    • Lập trình Web với Django
    • Lập trình PHP với Laravel Framework
  • CHƯƠNG TRÌNH ĐÀO TẠO ỨNG DỤNG CÔNG NGHỆ
    • Khóa học Tiền lương & Phúc lợi (C&B Excel) tại TP HCM
  • LẬP TRÌNH WEB FULL STACK
    • Khóa học Java Full stack (IJFD)
  • LẬP TRÌNH MOBILE
    • FRONT-END VỚI REACTJS VÀ REACT NATIVE
    • Lập trình Android Nâng cao
  • ĐÀO TẠO CHO DOANH NGHIỆP
    • KHÓA HỌC BUSINESS ANALYSIC TỪ CƠ BẢN ĐẾN NÂNG CAO 2023
    • Khóa học Magento: Làm chủ CMS TMĐT lớn nhất
    • Khóa học IOT: Xây dựng Sản phẩm IOT với Raspberry Pi
    • Khóa học Automation Testing Chuyên nghiệp
  • KHÓA HỌC DỰ ÁN
    • Học sử dụng bộ Office: Word, Excel, Power Point, Mail chuyên nghiệp
  • KHÓA HỌC KHÁC
    • VBA Excel Toàn Tập (Cơ Bản - Nâng Cao)
    • VBA Excel Nâng cao
    • Khóa học JMeter: Performance Testing
    • Khóa học Tester đạt chuẩn Quốc tế ISTQB Foundation Level
    • Khoá Học Tester đạt chuẩn quốc tế ISTQB Advanced Level
Bạn chưa chọn khóa học cần đăng ký
Tên không được để trống
Số điện thoại không được để trống
Email không được để trống
Đăng ký học thành công!
Cảm ơn bạn đã đăng ký học tại NIIT - ICT HÀ NỘI!