Thứ tư, 06/12/2017 | 00:00 GMT+7

Khám phá đối tượng ngày JavaScript


Có một số thư viện tuyệt vời để xử lý ngày tháng trong JavaScript, với Moment.jsdate-fns có lẽ là hai thư viện phổ biến nhất. Tuy nhiên, rất phổ biến nếu chỉ có một số nhu cầu cơ bản để chơi với ngày tháng và sử dụng thư viện thay vì đối tượng ngày JavaScript root sẽ là quá mức cần thiết. Do đó, hãy khám phá những gì ta có thể làm nguyên bản bằng cách sử dụng đối tượng ngày tháng.

Tạo đối tượng ngày

Tạo một version ngày mới dễ dàng như việc tạo mới một đối tượng ngày.

Không có đối số, ta nhận được ngày và giờ hiện tại theo múi giờ local :

const now = new Date();

console.log(now); // Wed Dec 06 2017 18:30:55 GMT-0800 (PST)

Mili giây kể từ kỷ nguyên Unix

Bạn cũng có thể chuyển vào một số nguyên cho một đối tượng ngày tháng X lượng mili giây sau ngày 1 tháng 1 năm 1970 UTC:

const latter = new Date(4000000000);

console.log(latter); // Sun Feb 15 1970 23:06:40 GMT-0800 (PST)

Chuỗi ngày

Ngoài ra, bạn cũng có thể tạo một đối tượng ngày tháng bằng cách chuyển một chuỗi:

const summerOf95 = new Date("1995-06-28");

// or, with a full date string that also includes the time and the time zone. Note here that `Z` is for UTC timezone:
const december31st = new Date("1999-12-31T02:56:03.392Z");

Thành phần ngày

Cuối cùng, bạn có thể tạo đối tượng ngày tháng trong múi giờ local của bạn bằng cách sử dụng đối số thành phần riêng biệt:

const someDate = new Date(2000, 5, 20, 16, 34, 12, 24);

console.log(someDate); // Tue Jun 20 2000 16:34:12 GMT-0700 (PDT)

Lưu ý các tháng dựa trên số 0 như thế nào và do đó 5 đại diện cho tháng Sáu. Các thành phần cho thời gian có thể được bỏ qua và 0 sẽ được giả định:

const someDate = new Date(2000, 5, 20, 16, null, 12, 24);

console.log(someDate); // Tue Jun 20 2000 16:00:12 GMT-0700 (PDT)

Nếu bạn bối rối bởi ngày trả về khi console ghi một đối tượng ngày, hãy nhớ rằng hầu hết các trình duyệt đều xuất ra thời gian theo múi giờ local của bạn.

Dấu thời gian

Nhận dấu thời gian (số mili giây kể từ ngày 1 tháng 1 năm 1970 theo giờ UTC) bằng cách sử dụng phương thức getTime của version ngày:

const nowTimestamp = new Date().getTime();

console.log(nowTimestamp); // 1512616153783

Dấu thời gian cho bây giờ

Trong ví dụ trên, now ta đang lấy dấu thời gian. Điều này phổ biến đến mức JavaScript hiện có một phương pháp để có được điều đó dễ dàng hơn:

const nowTimestamp = Date.now();

console.log(nowTimestamp); // 1512616153783

Dấu thời gian rất hữu ích để dễ dàng tính toán sự khác biệt theo mili giây giữa hai ngày. Ví dụ: ở đây, ta nhận được sự khác biệt tính bằng mili giây giữa ngày 3 tháng 2 năm 1996 và ngày 1 tháng 1 năm 1970:

const diff = new Date("1995-02-03").getTime() - new Date(0).getTime();

Trong trường hợp trên, bạn có thể bỏ qua lệnh gọi đến getTime và ngày tháng sẽ tự động được ép buộc vào dấu thời gian:

const diff = new Date("1995-02-03") - new Date(0);

Chuỗi có thể đọc được của con người

Các cá thể đối tượng ngày tháng cũng cung cấp cho ta một vài phương pháp hữu ích để có được các biểu diễn chuỗi thân thiện với con người. Các phương thức toDateString , toTimeString , toLocaleDateString , toLocaleString , toLocaleTimeStringtoUTCString là những phương thức hữu ích nhất và được minh họa trong ví dụ sau:

const now = new Date();

console.log(now.toDateString()); // Wed Dec 06 2017
console.log(now.toTimeString()); // 19:23:42 GMT-0800 (PST)
console.log(now.toLocaleDateString()); // 12/6/2017
console.log(now.toLocaleString()); // 12/6/2017, 7:20:28 PM
console.log(now.toLocaleTimeString()); // 7:20:51 PM
console.log(now.toUTCString()); // Thu, 07 Dec 2017 03:21:14 GMT

Nhận thành phần ngày hoặc giờ

Bạn có thể lấy các thành phần ngày / giờ cụ thể từ một version ngày bằng các phương pháp sau:

  • getFullYear () : Năm, sử dụng 4 chữ số.
  • getDate () : Ngày trong tháng (ví dụ: 31).
  • getMonth () : Một số nguyên dựa trên 0 cho tháng (ví dụ: 0 cho tháng 1).
  • getDay () : Chỉ mục cho ngày trong tuần từ 0 cho Chủ nhật đến 6 cho thứ Bảy.
  • getHours () : Giờ trong ngày.
  • getMinutes () : Số phút.
  • getSeconds () : Giây.
  • getMilliseconds () : Phần nghìn giây.

Đây là một ví dụ đơn giản:

const now = new Date();

console.log(`It's ${now.getHours()}:${now.getMinutes()} o'clock`);
// It's 19:34 O'Clock

Lưu ý tất cả các phương pháp trên đều trả về các thành phần ngày / giờ trong múi giờ local . Mỗi phương thức có một giá trị tương đương để thay thế ngày / giờ UTC được trả về (ví dụ: getUTCMinutes () ).

Đặt thành phần ngày hoặc giờ

Tương tự như cách ta có thể lấy các thành phần ngày / giờ, ta cũng có thể đặt chúng bằng các phương pháp tương tự:

const now = new Date();

now.setFullYear(2049);

console.log(now.toLocaleString()); // 12/6/2049, 7:40:04 PM

Lưu ý có một phím tắt trong đó hầu hết các phương thức đặt có thể nhận nhiều đối số để đặt các thành phần khác. Hai đoạn mã này tạo ra cùng một kết quả:

Cách tẻ nhạt
const now = new Date();


Đường tắt
const now = new Date();


Thêm / trừ thời gian

Sử dụng kết hợp các phương thức get và set, bạn có thể thêm hoặc bớt các thành phần ngày / giờ của một version ngày tháng. Ví dụ ở đây, ta thêm 15 phút vào thời gian hiện tại:

const now = new Date();

console.log(now.toLocaleTimeString()); // 7:47:53 PM

now.setMinutes(now.getMinutes() + 15);

console.log(now.toLocaleTimeString()); // 8:02:53 PM

Tags:

Các tin liên quan

chuỗi con so với chuỗi con trong JavaScript
2017-11-06
Hiểu Ngày và Giờ trong JavaScript
2017-10-19
Cách xác định các hàm trong JavaScript
2017-10-09
Vòng lặp Đối với, Đối với ... Trong vòng lặp và Đối với ... Trong Vòng lặp trong JavaScript
2017-10-02
Vòng lặp Đối với, Đối với ... Trong vòng lặp và Đối với ... Trong Vòng lặp trong JavaScript
2017-10-02
Xử lý các đối tượng trong JavaScript với Object.assign, Object.keys và hasOwnProperty
2017-09-29
Sử dụng Vòng lặp While và Vòng lặp Do ... Trong khi trong JavaScript
2017-09-27
Sử dụng Vòng lặp While và Vòng lặp Do ... Trong khi trong JavaScript
2017-09-27
Cách sử dụng câu lệnh Switch trong JavaScript
2017-09-11
Cách viết các câu lệnh có điều kiện trong JavaScript
2017-08-29