Hướng dẫn how do i get the latest date in javascript? - làm cách nào để lấy ngày mới nhất trong javascript?

Tôi sử dụng angularjs trong dự án.

Tôi nhận được mảng các đối tượng từ máy chủ. Mỗi đối tượng chứa một vài thuộc tính và một trong số chúng là thuộc tính ngày.

Đây là mảng (trong JSON) mà tôi nhận được từ máy chủ:

[
  {
    "Address": 25,
    "AlertType": 1,
    "Area": "North",
    "MeasureDate": "2019-02-01T00:01:01.001Z",
    "MeasureValue": -1
  },
  {
    "Address": 26,
    "AlertType": 1,
    "Area": "West",
    "MeasureDate": "2016-04-12T15:13:11.733Z",
    "MeasureValue": -1
  },
  {
    "Address": 25,
    "AlertType": 1,
    "Area": "North",
    "MeasureDate": "2017-02-01T00:01:01.001Z",
    "MeasureValue": -1
  }
          .
          .
          .
]

Tôi cần có được ngày mới nhất từ ​​mảng.

Cách thanh lịch để có được ngày mới nhất từ ​​mảng các đối tượng là gì?

Hướng dẫn how do i get the latest date in javascript? - làm cách nào để lấy ngày mới nhất trong javascript?

Astaroth

7536 Huy hiệu bạc24 Huy hiệu Đồng6 silver badges24 bronze badges

Hỏi ngày 12 tháng 4 năm 2016 lúc 15:05Apr 12, 2016 at 15:05

5

Một cách sạch sẽ để chuyển đổi mỗi ngày thành

new Date(Math.max(...a.map(e => new Date(e.MeasureDate))));
6 và lấy tối đa

ES6:

new Date(Math.max(...a.map(e => new Date(e.MeasureDate))));

JS:

new Date(Math.max.apply(null, a.map(function(e) {
  return new Date(e.MeasureDate);
})));

trong đó

new Date(Math.max(...a.map(e => new Date(e.MeasureDate))));
7 là mảng của các đối tượng.

Những gì điều này làm là ánh xạ từng đối tượng trong mảng đến một ngày được tạo với giá trị

new Date(Math.max(...a.map(e => new Date(e.MeasureDate))));
8. Mảng ánh xạ này sau đó được áp dụng cho hàm
new Date(Math.max(...a.map(e => new Date(e.MeasureDate))));
9 để có được ngày mới nhất và kết quả được chuyển đổi thành một ngày.

Bằng cách ánh xạ các ngày chuỗi vào các đối tượng ngày JS, cuối cùng bạn sử dụng một giải pháp như min/max của ngày trong một mảng?

-

Một giải pháp ít sạch sẽ là chỉ đơn giản là ánh xạ các đối tượng theo giá trị của

new Date(Math.max(...a.map(e => new Date(e.MeasureDate))));
8 và sắp xếp mảng chuỗi. Điều này chỉ hoạt động vì định dạng ngày cụ thể bạn đang sử dụng.

a.map(function(e) { return e.MeasureDate; }).sort().reverse()[0]

Nếu hiệu suất là một mối quan tâm, bạn có thể muốn

new Date(Math.max.apply(null, a.map(function(e) {
  return new Date(e.MeasureDate);
})));
1 mảng để có được mức tối đa thay vì sử dụng
new Date(Math.max.apply(null, a.map(function(e) {
  return new Date(e.MeasureDate);
})));
2 và
new Date(Math.max.apply(null, a.map(function(e) {
  return new Date(e.MeasureDate);
})));
3.

Đã trả lời ngày 12 tháng 4 năm 2016 lúc 16:22Apr 12, 2016 at 16:22

arcyqwertyarcyqwertyarcyqwerty

9,9233 Huy hiệu vàng45 Huy hiệu bạc83 Huy hiệu đồng3 gold badges45 silver badges83 bronze badges

7

Hơn nữa cho câu trả lời của @Travis Heeter, điều này trả về đối tượng chứa ngày mới nhất:

new Date(Math.max.apply(null, a.map(function(e) {
  return new Date(e.MeasureDate);
})));
4

Một giải pháp mạnh mẽ hơn có lẽ có thể chuyển đổi các chuỗi thành các đối tượng

new Date(Math.max.apply(null, a.map(function(e) {
  return new Date(e.MeasureDate);
})));
5 mỗi lần. Có thể chậm hơn đáng kể nếu giao dịch với (rất) các mảng lớn:

array.reduce((a, b) => {
  return new Date(a.MeasureDate) > new Date(b.MeasureDate) ? a : b;
});

Đã trả lời ngày 30 tháng 8 năm 2019 lúc 17:49Aug 30, 2019 at 17:49

YorkshiremanyorkshiremanYorkshireman

2.1051 Huy hiệu vàng21 Huy hiệu bạc35 Huy hiệu đồng1 gold badge21 silver badges35 bronze badges

3

Nếu bạn muốn có được toàn bộ đối tượng, không chỉ là ngày ...

Nếu mảng đối tượng của OP được gán cho

new Date(Math.max(...a.map(e => new Date(e.MeasureDate))));
7 thì đây là cách bạn có được đối tượng với ngày gần đây nhất:

var mostRecentDate = new Date(Math.max.apply(null, a.map( e => {
   return new Date(e.MeasureDate);
})));
var mostRecentObject = a.filter( e => { 
    var d = new Date( e.MeasureDate ); 
    return d.getTime() == mostRecentDate.getTime();
})[0];
  1. new Date(Math.max.apply(null, a.map(function(e) {
      return new Date(e.MeasureDate);
    })));
    
    7 Nhận ngày từ mảng các đối tượng.
  2. new Date(Math.max.apply(null, a.map(function(e) {
      return new Date(e.MeasureDate);
    })));
    
    8 được áp dụng cho mỗi ngày, làm cho các đối tượng ngày
  3. new Date(Math.max.apply(null, a.map(function(e) {
      return new Date(e.MeasureDate);
    })));
    
    9 tìm thấy gần đây nhất
  4. Chúng tôi đã tìm thấy ngày gần đây nhất, bây giờ chúng tôi cần đối tượng.
  5. a.map(function(e) { return e.MeasureDate; }).sort().reverse()[0]
    
    0 Vòng lặp qua mảng
    new Date(Math.max(...a.map(e => new Date(e.MeasureDate))));
    
    7 ban đầu.
  6. Chúng tôi cần một số cách để so sánh ngày, vì vậy chúng tôi sử dụng
    a.map(function(e) { return e.MeasureDate; }).sort().reverse()[0]
    
    2, trả về số mili giây kể từ ngày 01/01/1970. Điều này sẽ chiếm thời gian - nếu nó được xác định - cũng như ngày.
  7. Khi ngày chính xác được tìm thấy,
    a.map(function(e) { return e.MeasureDate; }).sort().reverse()[0]
    
    3 được trả lại và
    a.map(function(e) { return e.MeasureDate; }).sort().reverse()[0]
    
    4 cho chúng ta chỉ là đối tượng đó.

Lưu ý: Giải pháp này là một phần mở rộng của câu trả lời của @archyqwerty ở trên. Giải pháp của họ chỉ đưa ra ngày gần đây nhất từ ​​một loạt các đối tượng, giải pháp này cung cấp cho bạn toàn bộ đối tượng rằng ngày là thành viên của.

Đã trả lời ngày 12 tháng 2 năm 2019 lúc 15:51Feb 12, 2019 at 15:51

Hướng dẫn how do i get the latest date in javascript? - làm cách nào để lấy ngày mới nhất trong javascript?

Travis HeeterTravis HeeterTravis Heeter

12.1k13 Huy hiệu vàng81 Huy hiệu bạc124 Huy hiệu đồng13 gold badges81 silver badges124 bronze badges

0

Sửa đổi câu trả lời của Anton Harald: mảng tôi đã sử dụng moddate thay vì đo. Tôi đang chọn ngày gần đây nhất. Những công việc này.

  getLatestDate(xs) {
   if (xs.length) {
   return xs.reduce((m,v,i) => (v.ModDate > m.ModDate) && i ? v : m).ModDate;
  }
}

M = Accumulator, V = hiện tại, I = Index

Môi trường: TypeScript, ES6

Đã trả lời ngày 10 tháng 1 năm 2017 lúc 22:41Jan 10, 2017 at 22:41

Hướng dẫn how do i get the latest date in javascript? - làm cách nào để lấy ngày mới nhất trong javascript?

2

function getLatestDate(data) {
   // convert to timestamp and sort
   var sorted_ms = data.map(function(item) {
      return new Date(item.MeasureDate).getTime()
   }).sort(); 
   // take latest
   var latest_ms = sorted_ms[sorted_ms.length-1];
   // convert to js date object 
   return new Date(latest_ms);
}

var data = [{MeasureDate: "2014-10-04T16:10:00"},
            {MeasureDate: "2013-10-04T16:10:00"},
            {MeasureDate: "2012-10-04T16:10:00"}];

getLatestDate(data).toString(); // "Sat Oct 04 2014 18:10:00 GMT+0200 (CEST)"

Hàm này trả về ngày mới nhất dưới dạng đối tượng ngày JavaScript. Bạn cũng có thể biến nó thành một chuỗi ISO (định dạng dữ liệu nguồn của bạn) bằng phương thức đối tượng ngày toisoString ().

var date_str = "2012-10-04T16:10:00";
(new Date(date_str)).toISOString(); // "2012-10-04T16:10:00.000Z"

Như bạn có thể thấy kết quả của phương pháp bao gồm cuối cùng không có mili giây. Nếu bạn cần chuỗi dữ liệu ISO gốc của mình, bạn có thể muốn đi với chức năng sau:

function getLatestDate2(data) {

   var sorted = data.map(function(item) {
      var MeasureDate = item.MeasureDate;
      return {original_str: MeasureDate,
              in_ms: (new Date(MeasureDate)).getTime()}
   }).sort(function(item1, item2) {
      return (item1.in_ms < item2.in_ms)
   }); 

   // take latest
   var latest = sorted[0];

   return latest.original_str;
}

getLatestDate2(data); // "2014-10-04T16:10:00"

Đã trả lời ngày 12 tháng 4 năm 2016 lúc 16:25Apr 12, 2016 at 16:25

Anton Haraldanton HaraldAnton Harald

5.6824 Huy hiệu vàng21 Huy hiệu bạc57 Huy hiệu đồng4 gold badges21 silver badges57 bronze badges

Câu trả lời được đánh giá bởi hiệu suất:

  1. a.map(function(e) { return e.MeasureDate; }).sort().reverse()[0]
    
    5
  2. a.map(function(e) { return e.MeasureDate; }).sort().reverse()[0]
    
    6
  3. a.map(function(e) { return e.MeasureDate; }).sort().reverse()[0]
    
    7

(giả sử x là mảng)

Đã trả lời ngày 6 tháng 3 lúc 22:09Mar 6 at 22:09

Ngoài ra hơn nữa cho câu trả lời của @Travisheeter ..

Thay vì sử dụng 'bộ lọc' và lấy chỉ mục mảng của [0], bạn có thể sử dụng phương thức .find () thay vào đó như sau:

new Date(Math.max(...a.map(e => new Date(e.MeasureDate))));
0

Điều này cũng làm cho mã hoạt động nhiều hơn, vì nó sẽ ngừng chăm sóc nó đã tìm thấy kết quả, thay vì lọc sẽ lặp lại trên tất cả các đối tượng trong mảng.

Đã trả lời ngày 21 tháng 11 năm 2019 lúc 12:48Nov 21, 2019 at 12:48

AlexalexAlex

1.19815 huy hiệu bạc26 Huy hiệu đồng15 silver badges26 bronze badges

Bằng cách này, bạn có thể nhận được toàn bộ đối tượng - tôi chỉ câu lạc bộ quá trình mà tôi đã học được từ câu trả lời của Travis Heeter:

new Date(Math.max(...a.map(e => new Date(e.MeasureDate))));
1

Hướng dẫn how do i get the latest date in javascript? - làm cách nào để lấy ngày mới nhất trong javascript?

Zach Jensz

3.1295 Huy hiệu vàng13 Huy hiệu bạc28 Huy hiệu đồng5 gold badges13 silver badges28 bronze badges

Đã trả lời ngày 22 tháng 6 lúc 10:08Jun 22 at 10:08

Hướng dẫn how do i get the latest date in javascript? - làm cách nào để lấy ngày mới nhất trong javascript?

Lấy cảm hứng từ nhiều đề xuất và nhận xét trong chủ đề này, đây là một giải pháp khác cho vấn đề. Nó rất nhanh, vì không có sự chuyển đổi đối tượng ngày.

new Date(Math.max(...a.map(e => new Date(e.MeasureDate))));
2

Đây là phiên bản cho các chức năng mũi tên không hỗ trợ của trình duyệt:

new Date(Math.max(...a.map(e => new Date(e.MeasureDate))));
3

Đã trả lời ngày 12 tháng 4 năm 2016 lúc 17:11Apr 12, 2016 at 17:11

Anton Haraldanton HaraldAnton Harald

5.6824 Huy hiệu vàng21 Huy hiệu bạc57 Huy hiệu đồng4 gold badges21 silver badges57 bronze badges

3

Đây là cách tôi chọn lasest/ngày cao nhất

new Date(Math.max(...a.map(e => new Date(e.MeasureDate))));
4

Đã trả lời ngày 18 tháng 11 năm 2020 lúc 7:35Nov 18, 2020 at 7:35

Hướng dẫn how do i get the latest date in javascript? - làm cách nào để lấy ngày mới nhất trong javascript?

R15R15R15

12K14 Huy hiệu vàng83 Huy hiệu bạc148 Huy hiệu đồng14 gold badges83 silver badges148 bronze badges

new Date(Math.max(...a.map(e => new Date(e.MeasureDate))));
5

Đã trả lời ngày 31 tháng 8 năm 2019 lúc 11:02Aug 31, 2019 at 11:02

3

Ngày mới () trong JavaScript là gì?

Trình xây dựng ngày mới () trong JavaScript, các đối tượng ngày được tạo bằng ngày mới (). Ngày mới () trả về một đối tượng ngày với ngày và giờ hiện tại.returns a date object with the current date and time.

Ngày mới () trở lại là gì?

Trả về giá trị gọi hàm ngày () (không có từ khóa mới) trả về một biểu diễn chuỗi của ngày và giờ hiện tại, chính xác như ngày mới (). ToString () không.a string representation of the current date and time, exactly as new Date().toString() does.

Chức năng ngày trong JavaScript?

Đối tượng ngày JavaScript có thể được sử dụng để có được năm, tháng và ngày.Bạn có thể hiển thị bộ hẹn giờ trên trang web bằng sự trợ giúp của đối tượng Ngày JavaScript.Bạn có thể sử dụng các hàm tạo ngày khác nhau để tạo đối tượng ngày.Nó cung cấp các phương pháp để có được và thiết lập ngày, tháng, năm, giờ, phút và giây.. You can display a timer on the webpage by the help of JavaScript date object. You can use different Date constructors to create date object. It provides methods to get and set day, month, year, hour, minute and seconds.

Có loại ngày trong JavaScript không?

JavaScript không có kiểu dữ liệu ngày.Tuy nhiên, bạn có thể sử dụng đối tượng ngày và các phương thức của nó để làm việc với ngày và thời gian trong các ứng dụng của bạn.Đối tượng ngày có một số lượng lớn các phương thức để thiết lập, nhận và thao tác ngày.Nó không có bất kỳ tài sản.. However, you can use the Date object and its methods to work with dates and times in your applications. The Date object has a large number of methods for setting, getting, and manipulating dates. It does not have any properties.