Ad Widget

Collapse

Преобразую ISO формат даты в Unix-формат получаю разницу в 12.3 дня.

Collapse
X
 
  • Time
  • Show
Clear All
new posts
  • Navoyenok
    Senior Member
    • Dec 2011
    • 101

    #1

    Преобразую ISO формат даты в Unix-формат получаю разницу в 12.3 дня.

    Добрый день!

    В Zabbix в элемент прилетает дата типа 2024-01-15T16:41:00+0300 далее JavaScript препроцессинг для элемента вида: return Date.parse(value)/1000; и получаю
    1704256860
    ​а это значение значение эквивалентно среда, 3 января 2024 г., 7:41:00 GMT+03:00
    Кто сталкивался - прошу помочь!

    Пожалуйста!
  • Kos
    Senior Member
    Zabbix Certified SpecialistZabbix Certified Professional
    • Aug 2015
    • 3404

    #2
    Где-то была у меня подобная фигня.
    Вот - кажется, нашёл.

    Дело в том, что метод Date.parse() принимает в качестве параметра отметку времени в формате либо RFC2822, либо ISO 8601 (ссылка).
    А ваш формат - ни то, ни другое. Ближе всего он как раз к ISO, но там часовой пояс имеет формат:
    Z or +hh:mm or -hh:mm
    (ссылка).​
    В вашем же случае двоеточие отсутствует, поэтому запись "+0300" воспринимается не как "плюс три часа", а как "плюс 300 минут" от Гринвича, что и приводит к вашему результату.
    Вывод: прежде чем парсить, добавьте туда двоеточие перед последними двумя нулями.

    Comment


    • Navoyenok
      Navoyenok commented
      Editing a comment
      Kos, доброе утро! Спасибо огромное! Используемый формат ISO. Попробую использоваться и напишу по факту.

      Итог:
      Замена форматов ни к чему хорошему не привела. Функция в таком случае просто возвращает NaN.
      А вот замена +0300 на +03:00 помогла.
      Как варианты такое решения:

      const words = value.split('+');
      const str = words[0] + '+03:00';
      return Date.parse(str)/1000;

      или так:
      const str = value.replace("+0300", '+03:00');
      return Date.parse(str)/1000;

      Согласен - сделал топорно, но времени пока с JS разбираться нетути.

      Kos спасибо огромное!

      Тему можно закрывать.
      Last edited by Navoyenok; 16-01-2024, 09:21.
Working...