Отобразить строку даты и времени iso8601 в юлианский день, используя JavaScript
У кого-нибудь есть компактная / элегантная карта из строки даты-времени ISO-8601 следующего вида:
2013-12-28T20:30:00-0700
В юлианский день. Я надеюсь найти решение, которое избегает внешней библиотеки и имеет минимальное регулярное выражение и манипуляции со строками.
1 ответ
Вот один из способов сделать это.
Вы можете преобразовать строку ISO - также со смещением часового пояса - в JavaScript Date
объект в современном JavaScript (ES5). Это работает в Node.js, Chrome и Firefox. Это еще не поддерживается в Safari или IE. Если вам нужно, чтобы он работал во всех браузерах, вам нужно проанализировать дату самостоятельно или использовать библиотеку, такую как Moment.js.
Я проверил этот алгоритм на американском военно-морском обсерватории с помощью конвертера дат Джулиана для ряда дат.
Для дат, предшествующих григорианскому переходу (15 октября 1582 г.), это предполагает, что Григорианский календарь имеет пролептический характер и будет отличаться от того, что показывает Военно-морская обсерватория США.
function julianDayNumber(d) {
var epoch = 2440587.500000; // Jan. 1, 1970 00:00:00 UTC
return d.getTime() / 86400000 + epoch;
}
Пример использования:
console.log(julianDayNumber(new Date('2013-12-28T20:30:00-0700')));
// prints: 2456655.6458333335