2016-12-17 112 views
1

我想通过使用d3.js创建一个日历热图。但我需要在周一开始星期几,而不是默认日历热点地图中的星期天。那么,有没有办法让今年和平日的周ISO格式在d3获取ISO星期几和星期几

var rect = svg.selectAll(".day") 
     .data(function (d) { 
      return d3.time.days(new Date(d, 0, 1), new Date(d + 1, 0, 1)); 
     }) 
     .enter().append("rect") 
     .attr("class", "day") 
     .attr("width", cellSize) 
     .attr("height", cellSize) 
     .attr("x", function (d) { 
      return d3.time.weekOfYear(d) * cellSize; 
     }) 
     .attr("y", function (d) { 
      return d.getDay() * cellSize; 
     }) 

计算工作日和周当年在上面的代码的代码是

d.getDay() and d3.time.weekOfYear(d) 

分别

回答

1

按照documentation

WEEKOFYEAR是sundayOfYear

别名

所以,在我看来,你所寻求的解决方案只是改变了你有什么权利现在:

d3.time.sundayOfYear(date) 

对于这一点:

d3.time.mondayOfYear(date) 
+1

明白了。对getDay进行了一些修改以制作ISO日历。尽管如此,第一个ISO 8601星期是包含第一个星期四的那个星期,但是https://jsfiddle.net/suhailsulu/cjj395zv/ –

+0

'mondayOfYear'不会产生ISO星期数。 – Joey

+0

D3日期不符合ISO8601:https://github.com/d3/d3-time-format –