2014-11-21 10 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. Думая, что это может быть проблемой из расчетов, я попробовал распечатать значение дня в часовом диапазоне напрямую и нашел ту же проблему. Чтение справочника API интервала времени для библиотеки D3, это кажется аномальной ошибкой.

Кто-нибудь знает, почему это происходит, а также какие-либо решения для получения диапазона часов и их относительных дат без этой проблемы значения дня, повторяющегося каждую неделю? Любое понимание этого будет высоко оценено!

EDIT: быть четким. Когда тип hourRange [500] в консоли, он возвращает:

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

Но, когда я печатаю hourRange [500] .getDay() в консоли, он возвращает:

4 

, когда он должен быть явно 22.

ответ

0

D3.time.getDay() возвращает значение дня недели. Мне нужно было использовать D3.time.getDate(), чтобы получить значение дня месяца.