高图中的日期格式问题

时间:2016-07-21 09:01:13

标签: javascript jquery highcharts

我使用下面的代码来格式化Highcharts中的日期,

Highcharts.dateFormats = {
    W: function (timestamp) {
        var date = new Date(timestamp),
            day = date.getUTCDay() == 0 ? 7 : date.getUTCDay(),
            dayNumber;
            date.setDate(date.getUTCDate() + 4 - day);
            dayNumber = Math.ceil((date.getTime() - new Date(date.getUTCFullYear(), 1, 1, 0)) / 86400000);
        //console.log(dayNumber);
        console.log(Math.floor(dayNumber / 7));
        return Math.floor(dayNumber / 7);
    }
}

但周订单如下 - 0,4,8,12,17,21,26,30,34,39,43,47

日期格式应该如下 - “0,4,8,12,16,20,24,28,32,36,40,44,48,52”

我的代码出了什么问题,并且知道为什么在125增加MainActivity并将其设置为“17”?

提前感谢!!

1 个答案:

答案 0 :(得分:0)

您获得的周数似乎符合ISO定义。 请查看此信息以便进一步阅读https://en.wikipedia.org/wiki/ISO_week_date

创建了一个样本http://jsfiddle.net/pmajhwar/bzv5k6L8/,有助于专家输入和更快的解决方案。希望这会有所帮助。

<script src="http://code.highcharts.com/stock/highstock.js"></script>
<div id="container" style="height: 400px"></div>



 $(function() {
  Highcharts.dateFormats = {
    W: function(timestamp) {
      var date = new Date(timestamp),
        day = date.getUTCDay() == 0 ? 7 : date.getUTCDay(),
        dayNumber;
      date.setDate(date.getUTCDate() + 4 - day);
      dayNumber = Math.ceil((date.getTime() - new Date(date.getUTCFullYear(), 1, 1, 0)) / 86400000);
      console.log("UTC " + moment('2016-01-01').utc() + " " + Date.UTC(2016, 1, 1))
      var week = moment(date, 'lll').utc().isoWeek();
      // var week = moment(date, 'llll').utc().week();
      console.log("date: " + moment(date).utc().format('llll') + " wk " + Math.floor(dayNumber / 7) + "  moment wk-> " + week);
      //return Math.floor(dayNumber / 7) ;
      return week;


    }
  }

  var chart = new Highcharts.StockChart({

    chart: {
      renderTo: 'container'
    },

    title: {
      text: 'Custom date format'
    },

    xAxis: {
      type: 'datetime',
      tickInterval: 7 * 24 * 36e5, // one week
      labels: {
        format: '{value:Week %W/%Y}',
        align: 'right',
        rotation: -30
      }
    },

    series: [{
      data: [29.9, 71.5, 106.4, 129.2, 144.0, 176.0, 135.6, 148.5, 216.4, 194.1, 95.6, 54.4, 29.9, 71.5, 106.4, 129.2, 144.0, 176.0, 135.6, 148.5, 216.4, 194.1, 95.6, 54.4, 29.9, 71.5, 106.4, 129.2, 144.0, 176.0, 135.6, 148.5, 216.4, 194.1, 95.6, 54.4, 71.5, 106.4, 129.2, 144.0, 176.0, 135.6, 148.5, 216.4, 194.1, 95.6, 54.4, 29.9, 71.5, 106.4, 129.2, 144.0, 176.0, 129.2, 144.0, 176.0],
      pointInterval: 7 * 24 * 36e5,
      pointStart: Date.UTC(2016, 0, 1)

    }]

  });
});