Стартовая страница › Форумы › Разработка и интеграция › Время что дышло
- В этой теме 55 ответов, 5 участников, последнее обновление 1 год, 1 месяц назад сделано
manjey73.
-
АвторЗаписи
-
16.07.2025 в 13:29 #39465
a80808УчастникСпасибо!
16.07.2025 в 13:32 #39466
MikhailМодераторПри создании архивного среза в драйвере он привязывается не напрямую к каналам, а к тегам устройства. Теги уже привязываются к каналам автоматически при инициализации логики.
16.07.2025 в 14:46 #39470
manjey73Участник@mikhail тут немножко подробнее.
драйверу при создании slice недостаточно, что в тегах устройства в Сервере указана маска архивов?
В моем случае создан часовой архив и снята галочка «По умолчанию», чтобы в архив не писались остальные каналы.
Как-то выудить маску из Сервера можно? чтобы не указывать в настройках опроса, а оно само подхватывало?16.07.2025 в 15:38 #39472
manjey73Участник16.07.2025 в 16:03 #39473
manjey73УчастникА пир чтении из БД на 00:00 по UTC мы тут
Получается время в верхней строке Московское? раз у меня часы (ПК синхронизирован по ntp) а при вытаскивании на 00:00 часов из БД данных оно показывается в 3:00 по Москве.
И время ПК и в верхней строке совпадает с моим Московским.17.07.2025 в 10:00 #39479
manjey73УчастникЁшкин кот… я понял проблему со временем, которая происходит. наконец-то Семён Семёныч! 🙂
При настройке формата Дата, Время, Дата и Время срабатывает преобразование за счет выставленного времени для Web сервера. (в моем случае +3 часа, ч.п. Москва)
Чтобы на мнемосхему вывести текущее время для своего ч.п. надо ставить формулу DateTime.UtcNow — логично, учитывая, что время сервера по UTCА вот в другом случае, если проще выразиться ВРЕМЯ является именем нарицательным и не должно видоизменяться средствами WEB. Например время прибора в моем случае.
Скрин в в этом посте это прекрасно демонстрирует.
Теперь вопрос — каким образом это обойти в срезе ?
В общем мне необходимо в ячейке отображать нарицательное время БЕЗ ИЗМЕНЕНИЙ.
Возможно ли добавить в Форматы другие типы Дата, Время, Дата и Время чтобы web их не менял ?
и желательно без костылей в виде формул в канале… потому что это частое явление на самом деле.-
Ответ изменён 1 год, 1 месяц назад пользователем
manjey73.
17.07.2025 в 10:12 #39483Romiros
УчастникУ прибора есть свое локальное время. Драйвер его забирает, переводит в UTC и кладет в БД сервера. Если в web другой часовой пояс, то естественно и время будет другое. Если нужно подгонять под время сервера, то в драйвере надо учитывать часовой пояс сервера. Все же логично вроде?
17.07.2025 в 10:21 #39486
manjey73УчастникУ прибора есть свое локальное время. Драйвер его забирает, переводит в UTC и кладет в БД сервераВсе так и есть, читаю время счетчика и архива, отнимаю 7 часов (добавил настройки для этого) и записываю в БД по времени UTC.
Но проблема в том, что время считанного архива, время счетчика я должен отображать таким, какое оно есть в приборе — это переменная другого типа (нарицательного) хоть и время.
И из-за этого я постоянно то не то, то не там делал в коде…
Вот сейчас на счетчике 14:20 и архив 14:00 — вот оно так и должно отображаться без махинаций по приведению к UTC, потом к локальному времени клиента.
А Web этого не позволяет…17.07.2025 в 10:29 #39487
manjey73Участникзы, в общем покажите дураку пример кода драйвера для Коммуникатора при условии.
1. прибор в зоне +7
2. Коммуникатор 1 — в зоне -2 часа
3. Коммуникатор 2 — в зоне +3 часа
4 Клиент 1 — зона +4 часа
5 Клиент 2 — зона +3 часаЯ не понимаю, как в драйвере это все провернуть, чтобы все корректно отображалось в первую очередь.. Запись в БД то не проблема, знаем зону, выставили в настройках.
А вот с остальным при формировании срезов и DeviceData.Set как ?17.07.2025 в 14:37 #39510
MikhailМодераторНапример время прибора в моем случае.
На данный момент преобразовать время в строку по формуле. Чтобы можно было выбирать, преобразовывать ли время к конкретном канале, нужен какой-то признак в базе.
17.07.2025 в 14:48 #39511
manjey73Участникнужен какой-то признак в базе — Форматы — как идет их обработка при использовании «Дата и время» G, d, T ?
есть там вариант добавить «pureG» — G в чистом виде и т.д.?
Если сервер и web будет знать через Форматы, что не надо преобразовывать, то и не будет этого делать.
18.07.2025 в 14:47 #39579
MikhailМодераторG, d, T — это форматы, которые поддерживаются .NET. Добавлять некие секретные строки, которые будут интерпретироваться специфическим образом — это не наш метод. Либо в БД нужно добавить поле, либо сделать настройку веб-приложения в целом.
18.07.2025 в 16:22 #39585
manjey73УчастникЯ немного про другое 🙂 секретный код это то же самое что и G, d, T
только с префиксом, который поймет и Сервер и WEB, или только WEB (кому это требуется) чтобы не преобразовывать дату к своей локальной зоне.ну пример — прификсом пусть будет
-типа -G, -T, -d, Web видит это префикс, удаляет его и понимает как отображать время и дату, согласно форматированию .NET но не запускает процесс преобразования к локальному времени. всёНу что-то вроде лайфхака, багофичи, назовите как угодно.
Все зависит от обработки этого момента в коде (не смотрел и не искал).
Думаю такая доработка не сильна сложна в плане небольшой модернизации. Может я не прав и в коде это достаточно сложно сделать?-
Ответ изменён 1 год, 1 месяц назад пользователем
manjey73.
18.07.2025 в 16:27 #39587
manjey73Участникз.ы. я к тому, что по отношению ко времени, подобный префикс и обработка в коде было бы полезным. Так как Время действительно может быть «нарицательной» переменной, которое нельзя менять. А вы его настройками локальной зоны WEB сервера под одну гребенку закинули.
Ну и просто указать это в документации. А так же можно было бы использовать и внутри драйверов при создании каналов и т.д.
21.07.2025 в 09:13 #39593
manjey73Участник
Вопрос, как настроить архив и правильно указывать в коде, чтобы запись попала на 23:00 ?
Сейчас поставил смещение Дневного архива 23 часа
В коде соответственно slice = new DeviceSlice(Дата 0:00:00 // где время даты равно 0:00:00Как писало в нули, так и пишет, в таблице соответственно на 3-х часах по Москве.
-
Ответ изменён 1 год, 1 месяц назад пользователем
-
АвторЗаписи
- Для ответа в этой теме необходимо авторизоваться.

