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