2016-12-17 147 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 –