Преобразовать объект javascript datetime в формат, приемлемый для highcharts Date.UTC(2014, 0, 2)

#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 в остальных.