#javascript #highcharts
#javascript #highcharts
Вопрос:
У меня есть объект datetime в следующем формате: 2014-06-24 20:41:18
но для Highcharts Date.UTC ожидает дату следующим образом: Date.UTC(2014, 0, 2)
.
Каков был бы рекомендуемый способ его преобразования?
Ответ №1:
У меня есть объект datetime в следующем формате: 2014-06-24 20:41:18
Это не «объект datetime», это строка. Не используйте конструктор Date для разбора строк, он вызывает Date.parse, который, как известно, является непоследовательным в браузерах, даже для строк, которые соответствуют формату в ECMA-262 ed 5.
но дата Highcharts.UTC ожидает дату следующим образом: Date.UTC(2014, 0, 2)
Если вы хотите использовать только часть даты, и чтобы она обрабатывалась как UTC, вы можете сделать:
// Provide a string like 2014-06-23
function parseYMD(s) {
var b = s.split(/D /);
return new Date(Date.UTC(b[0], --b[1], b[2]));
}
если вы хотите включить время (и снова это UTC), измените последнюю строку на:
return new Date(Date.UTC(b[0], --b[1], b[2], b[3], b[4], b[5]));
который будет надежно работать во всех используемых браузерах. Обратите внимание, что в ISO 8601 даты без часового пояса должны рассматриваться как локальные, а не UTC.
Пожалуйста, обратите внимание, что строка, подобная ISO 8601, без часового пояса будет обрабатываться как UTC в некоторых браузерах, как local в некоторых других и NaN в остальных.