Итак, я работаю над визуализацией, которая вычисляет угол и расстояние солнца в определенном месте для каждого часа каждого дня в году. Расчеты занимают около 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.