Why do I get wrong result from function?

前端 未结 2 531
伪装坚强ぢ
伪装坚强ぢ 2021-01-26 01:48

I has this objects array:

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

I

相关标签:
2条回答
  • 2021-01-26 02:17

    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.

    0 讨论(0)
  • 2021-01-26 02:26

    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

    0 讨论(0)
提交回复
热议问题