2014-11-21 99 views
0

因此,我正在研究计算一年中每天每个小时在特定位置的太阳的角度和距离的可视化。这些计算占用了大约550行代码,因此我将该代码保留。我使用D3库来获取日期范围和相关的日期,月份和年份。为了获得范围,我使用这一行代码。D3按小时计日期范围;每7天重复一次

var hourRange = d3.time.hours(new Date(2013, 1, 1), new Date(2013, 12, 31)); 

在计算工作后,我非常兴奋。拥有8736个对象持有的9个值,

hourRange[i] = [hour, day, month, year, solar azimuth angle, solar elevation angle, EOT, solar declination angle, cosine of solar zenith angle] 

...终于开始了可视化的过程中,我发现,当天值从0-6去了,但不是直到月末增加,继续重复0-6直到月底,然后再次开始0-6值循环。从计算中思考这可能是一个问题,我试着直接打印小时范围的日期值,并发现相同的问题。读取D3库的时间间隔API参考,这似乎是一个异常错误。

有没有人知道为什么会发生这种情况,以及任何解决方案来获得小时的范围和他们的相对日期,而没有每周重复每周价值的问题?任何有识之士将不胜感激!

编辑:要清楚。当类型hourRange [500]在控制台,它返回:

Date 2013-02-22T01:00:00.000Z 

但是,当我在控制台键入hourRange [500] .getDay(),它返回:

4 

当它应该明确是22.

回答

0

D3.time.getDay()返回星期几的值。我需要使用D3.time.getDate()来获取当月的日期值。