Доброго времени суток уважаемые форумчане!
Прошу помощи поскольку сам уже перерыл все возможные форумы и сайты а решить задачу так и не получилось.
Проблема заключается в следующем, есть несколько сотен устройств на которых необходимо контролировать корректность текущей даты и времени, дата и время на устройствах предоставляется в формате YYYY-MM-DDThh:mm:ss±hh:mm (ISO 8601), а в Zabbix присутствует только возможность контроля даты и времени в формате unixtime на который можно настроить триггер при помощи выражения "fuzzytime".
Из той информации что находил я понял только то что формат времени ISO 8601 надо преобразовать через javascript в формат unixtime и уже на него настроить триггер, но поскольку я полный ноль в js прошу у Вас помощи в решении данной проблемы.
Заранее благодарю за помощь!
@zerox доброго времени суток, видеорегистраторы hikvision, время берется через ISAPI с определенной строки XML страницы, в текстовом формате
По идее, это всё делается на javascript довольно просто. Подобное преобразование времени выполняется в одну строку. Выглядеть предобработка в Zabbix будет примерно так:
# задаём переменную с полученным временем const date = new Date(value); # конвертируем в unixtime const timestamp = date.getTime(); # выводим полученное значение console.log(timestamp);
Это общий случай. В данном случае value это время в формате ISO, которое уже в айтеме так или иначе обработано, чтобы не было ничего лишнего. То есть в предыдущих шагах предобработки надо убрать всё лишнее, а на этом этапе сделать преобразование.
Это надо тестировать. Я написал пример того, как может выглядеть конвертация. Конечная реализация может отличаться.
@zerox благодарю за помощь, буду проверять, по результату обязательно отпишусь
@zerox Доброго времени суток, в общем все заработало с некоторыми изменениями, и получил нужное мне значение с учетом моего часового пояса (+06:00),
const date = new Date(Date.parse(value)); const timestamp = date.getTime(); return (timestamp/1000|0);
Благодарю за помощь!
return (timestamp/1000|0);
Можете пояснить эту строку? Зачем делим на 1000? И в каком случае будет 0 в выводе?
@zerox без деления на 1000 он выдает дату 5000 года, а насчет 0 не обратил на это внимание, эту часть кода я взял на одном из форумов когда искал варианты как реализовать преобразование