Я сохранил два общих атрибута устройства (MonitorStartTime ("20:00") и MonitorStopTime ("06:00"), и я хотел бы определить, находится ли текущая дата / время в этом интервале времени.
Я попытался добавить следующий скрипт фильтра в цепочку правил:
var today = new Date();
var MonitorStartTime = metadata.shared_MonitorStartTime;
var MonitorStopTime = metadata.shared_MonitorStopTime;
var dd = String(today.getDate());
var mm = String(today.getMonth() + 1); //January is 0!
var yyyy = today.getFullYear();
var MonitorStartTime = new Date(mm +'/' + dd + '/' + yyyy + " " + MonitorStartTime);
var MonitorStopTime = new Date(mm +'/' + dd + '/' + yyyy + " " + MonitorStopTime);
if (MonitorStopTime < MonitorStartTime)
{
MonitorStopTime.setDate(MonitorStopTime.getDate() + 1);
}
return (today > MonitorStartTime) && (today< MonitorStopTime);
Когда metadata.shared_MonitorStartTime равен «19:00», а metadata.shared_MonitorStopTime равен «06:00», я ожидаю, что вывод будетбыть верным в 20:30, но это не так. Когда время проходит 21:00, оно возвращает истину.
Имеет ли это отношение к часовым поясам? Thingsboard работает на экземпляре AWS EC2 в зоне eu-west-2а. Я нахожусь в Швеции (UTC + 2 часа).
Если да, то как мне это исправить? Спасибо за помощь, поскольку JavaScript не моя чашка чая; -)