Стартовая страница › Форумы › Понять, как работает ПО › Формат времени в v6
- В этой теме 16 ответов, 4 участника, последнее обновление 2 года назад сделано Mikhail.
-
АвторСообщения
-
18.04.2022 в 14:49 #23112manjey73Участник
В Расчетном канале стоит формула DateTime.Now.ToOADate() формат Time
На ПК время на 3 часа меньше по Москве, в Scada на 3 часа больше.
Почему вдруг, если в формуле не UTCNow а просто Now ???
18.04.2022 в 16:05 #23116a80808Участник18.04.2022 в 16:06 #23117a80808Участник18.04.2022 в 16:06 #23118a80808Участник18.04.2022 в 16:07 #23119a80808УчастникЧто то опять косячит вставка ссылки…
18.04.2022 в 16:14 #23120manjey73УчастникНу как-то странно все это, на ПК установлено время и TimeZone, я не прошу систему мне куда-то во что-то переводить, только получение и отображение текущего времени.
Почему это я вдруг должен применять в формуле UTCNow вместо Now ?
18.04.2022 в 16:17 #23121manjey73УчастникDateTime.UtcNow.ToOADate()
реально маразм, я прекрасно знаю, что я живу по Москве и раньше Now работало корректно. Теперь же система почему-то считает что надо добавить +3 часа к тому времени, которое я получал вполне логичной формулой текущего времени ПК, которое и так установлено по Москве…
18.04.2022 в 17:38 #23123manjey73УчастникНедавние архивные данные +---------------------+----------------------------------------------+ | Время | Описание | +---------------------+----------------------------------------------+ | 18.04.2022 20:12:00 | Запись средних мощностей 18.04.2022 17:16:25 | +---------------------+----------------------------------------------+ | 18.04.2022 20:12:30 | Запись средних мощностей 18.04.2022 17:16:25 | +---------------------+----------------------------------------------+ | 18.04.2022 20:13:00 | Запись средних мощностей 18.04.2022 17:16:25 | +---------------------+----------------------------------------------+
И похожая ситуация со временем при записи Архивного среза.
Почему в первой колонке время на 3 часа больше?При этом тут время корректное
Драйвер : DrvMercury23x 1.0.0.0 Состояние : не определён Время сеанса : 18.04.2022 17:35:00 Время команды : неопределено
Во второй колонке используется DateTime.Now()
18.04.2022 в 17:46 #23124RomirosУчастникЯ всё привожу к utc. И архивы и текущие и события. Тогда отображение в web правильное . Архивы тоже хранятся в utc.
18.04.2022 в 17:54 #23125manjey73УчастникИ как тогда привести к UTC только половину?
Еще раз — в заголовке время ПРАВИЛЬНОЕ,
В правой колонке используется через NOW время правильноеА вот slice.Descr = «Запись средних мощностей » + nowDt.ToString();
В левой колонке почему-то время + 3 часа. Тогда и в заголовке Устройства должно бы быть +3 часа
Время сеанса : 18.04.2022 17:53:30 а оно тут корректное
18.04.2022 в 18:30 #23126RomirosУчастникВ правой колонке используется через NOW время правильное
Посмотрите, что у вас в web в архива. Будет плюс три часа. Я оставляю в коммуникаторе по UTC. Тогда отображение в web соответствует местному времени и в текущих и в архивах и в событиях.19.04.2022 в 14:02 #23131MikhailМодераторВ Rapid SCADA 6 все серверные приложения используют время UTC. Конвертирование в местное время производится Вебстанцией автоматически.
Такой подход необходим по следующим причинам:
— Обеспечение корректной работы при изменении временной зоны сервера
— Нормальная работа архива при переходе на летнее/зимнее время
— Перенос архивов на другой сервер
— Доступ клиентов из разных регионов к одному серверу
— Однозначная интерпретация информации, записанной в архив.Что то опять косячит вставка ссылки…
Как именно?
19.04.2022 в 14:03 #23132MikhailМодераторВ файлах журналов время приводится к времени сервера для удобства администрирования.
19.04.2022 в 14:55 #23138manjey73УчастникПросто странная логика. Мы в одном месте используем DateTime.Now и тут же вынуждены заворачивать рыбу в UtcNow.
Особенно в формулах в расчетном канале это смотрится прекрасно. Все установлено на одном ПК, Сервер, Коммуникатор, Web и наблюдаешь такую картину, время на ПК одно, а в формуле вынужден применять Utc вместо локального…
эдакий лайфхак в обратную сторону…
- Этот ответ был изменен 2 года назад от manjey73.
20.04.2022 в 14:53 #23157MikhailМодераторНачиная с версии 6, официально не рекомендую использовать Now, только UtcNow.
Функция Now использует довольно сложную внутреннюю логику для конвертации времени при каждом вызове. Учитывая, что время при отображении на веб конвертируется, при использовании Now результат будет некорректный.Все установлено на одном ПК, Сервер, Коммуникатор, Web и наблюдаешь такую картину, время на ПК одно, а в формуле вынужден применять Utc вместо локального
Достаточно 1 раз столкнуться с необходимостью эксплуатировать систему в разных регионах одновременно, желание использовать Now сразу пропадает, т.к. нет однозначного понимания времени.
-
АвторСообщения
- Вы должны авторизироваться для ответа в этой теме.