Why do I get wrong result from function?

你离开我真会死。 提交于 2019-12-02 12:03:15

The reason is you don't have a timezone specified in your ISO8601 timestamp. Chrome defaults to UTC and and IE to local when it is not specified (or the other way around, I forget).

You can either:

a) add 'Z' to the end of your timestamp to specify UTC or add another timezone ( see wikipedia for valid formats https://en.m.wikipedia.org/wiki/ISO_8601)

b) use momentjs which I believe will standardize the behavior across the browsers.

As mentioned by @elliot moment can help you. Check this solution:

(function() {

  var data = [{
    Id: 540,
    MeasureDate: "2016-06-27T13:06:47"
  }, {
    Id: 541,
    MeasureDate: "2016-06-27T12:24:39"
  }, {
    Id: 540,
    MeasureDate: "2016-06-27T13:16:47"
  }];

  function getMaxInArray(items, max) {
    if (items.length) {
      var item = items.splice(0, 1)[0];
      return getMaxInArray(items, Math.max(item, !!max ? max : item));
    }
    return max;
  }

  var dates = data.map(function(x) { return moment(x.MeasureDate); });
  var latest = moment(getMaxInArray(dates));

  console.log(latest.format());

}());

http://plnkr.co:80/oeMDJYzDGkgm4cX4NIpo

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!