Формат времени в v6

  • В этой теме 16 ответов, 4 участника, последнее обновление 2 года назад сделано Mikhail.
Просмотр 15 сообщений - с 1 по 15 (из 17 всего)
  • Автор
    Сообщения
  • #23112
    manjey73
    Участник

    Время на 3 часа вперед

    В Расчетном канале стоит формула DateTime.Now.ToOADate() формат Time

    На ПК время на 3 часа меньше по Москве, в Scada на 3 часа больше.

    Почему вдруг, если в формуле не UTCNow а просто Now ???

    #23116
    a80808
    Участник

    Было то же самое, когда осталось от пятерки «старая» формула

    #23117
    a80808
    Участник

    #23118
    a80808
    Участник
    #23119
    a80808
    Участник

    Что то опять косячит вставка ссылки…

    #23120
    manjey73
    Участник

    Ну как-то странно все это, на ПК установлено время и TimeZone, я не прошу систему мне куда-то во что-то переводить, только получение и отображение текущего времени.

    Почему это я вдруг должен применять в формуле UTCNow вместо Now ?

    #23121
    manjey73
    Участник

    DateTime.UtcNow.ToOADate()

    реально маразм, я прекрасно знаю, что я живу по Москве и раньше Now работало корректно. Теперь же система почему-то считает что надо добавить +3 часа к тому времени, которое я получал вполне логичной формулой текущего времени ПК, которое и так установлено по Москве…

    #23123
    manjey73
    Участник
    Недавние архивные данные
    +---------------------+----------------------------------------------+
    | Время               | Описание                                     |
    +---------------------+----------------------------------------------+
    | 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()

    #23124
    Romiros
    Участник

    Я всё привожу к utc. И архивы и текущие и события. Тогда отображение в web правильное . Архивы тоже хранятся в utc.

    #23125
    manjey73
    Участник

    И как тогда привести к UTC только половину?

    Еще раз — в заголовке время ПРАВИЛЬНОЕ,
    В правой колонке используется через NOW время правильное

    А вот slice.Descr = «Запись средних мощностей » + nowDt.ToString();

    В левой колонке почему-то время + 3 часа. Тогда и в заголовке Устройства должно бы быть +3 часа

    Время сеанса : 18.04.2022 17:53:30 а оно тут корректное

    #23126
    Romiros
    Участник

    В правой колонке используется через NOW время правильное
    Посмотрите, что у вас в web в архива. Будет плюс три часа. Я оставляю в коммуникаторе по UTC. Тогда отображение в web соответствует местному времени и в текущих и в архивах и в событиях.

    #23131
    Mikhail
    Модератор

    В Rapid SCADA 6 все серверные приложения используют время UTC. Конвертирование в местное время производится Вебстанцией автоматически.

    Такой подход необходим по следующим причинам:
    — Обеспечение корректной работы при изменении временной зоны сервера
    — Нормальная работа архива при переходе на летнее/зимнее время
    — Перенос архивов на другой сервер
    — Доступ клиентов из разных регионов к одному серверу
    — Однозначная интерпретация информации, записанной в архив.

    Что то опять косячит вставка ссылки…

    Как именно?

    #23132
    Mikhail
    Модератор

    В файлах журналов время приводится к времени сервера для удобства администрирования.

    #23138
    manjey73
    Участник

    Просто странная логика. Мы в одном месте используем DateTime.Now и тут же вынуждены заворачивать рыбу в UtcNow.

    Особенно в формулах в расчетном канале это смотрится прекрасно. Все установлено на одном ПК, Сервер, Коммуникатор, Web и наблюдаешь такую картину, время на ПК одно, а в формуле вынужден применять Utc вместо локального…

    эдакий лайфхак в обратную сторону…

    • Этот ответ был изменен 2 года назад от manjey73.
    #23157
    Mikhail
    Модератор

    Начиная с версии 6, официально не рекомендую использовать Now, только UtcNow.
    Функция Now использует довольно сложную внутреннюю логику для конвертации времени при каждом вызове. Учитывая, что время при отображении на веб конвертируется, при использовании Now результат будет некорректный.

    Все установлено на одном ПК, Сервер, Коммуникатор, Web и наблюдаешь такую картину, время на ПК одно, а в формуле вынужден применять Utc вместо локального

    Достаточно 1 раз столкнуться с необходимостью эксплуатировать систему в разных регионах одновременно, желание использовать Now сразу пропадает, т.к. нет однозначного понимания времени.

Просмотр 15 сообщений - с 1 по 15 (из 17 всего)
  • Вы должны авторизироваться для ответа в этой теме.