Стартовая страница › Форумы › Разработка и интеграция › Время что дышло
- В этой теме 55 ответов, 5 участников, последнее обновление 1 год, 1 месяц назад сделано
manjey73.
-
АвторЗаписи
-
21.07.2025 в 09:19 #39594
manjey73УчастникКакая-то фигня со временем. Моей логики в голове не хватает понять, как, где и что надо делать, чтобы запись попала в нужную точку.
Меняешь в одном месте, пропадает в другом, что-то делаешь в другом, в первом ни черта не меняется и т.п.Думал разобрался уже, а вот фиг вам называется…
21.07.2025 в 09:31 #39598
manjey73УчастникКак из кода проверить, что slice записался? а не был проигнорирован ?
21.07.2025 в 09:50 #39599
manjey73УчастникВ общем через задницу все. Считал архив за 15.07 23:00
Web отображает его на 16.07 2:00 (прибавил 3 часа)какие хитросплетения манипуляций надо сделать, чтобы время записалось и отобразилось в одной точке времени при работе со slice?
Всем выставлять время UTC в WEB не предлагать, это костыль костылей…
21.07.2025 в 10:20 #39600
manjey73УчастникВремя суточного архива из ответа 14.07.2025 23:00:00
тут я нагло указал время 20:00:00 а не из ответа 23.
Время суточного архива 14.07.2025 20:00:00
Сделал смещение Архива 20 часов.Недавние исторические данные +---------------------+-----------------------------------------------------------+ | Время | Описание | +---------------------+-----------------------------------------------------------+ | 21.07.2025 10:00:00 | Запись в Часовой архив, Время архива: 21.07.2025 14:00:00 | +---------------------+-----------------------------------------------------------+ | 14.07.2025 23:00:00 | Запись в Дневной архив, Время архива: 14.07.2025 20:00:00 | +---------------------+-----------------------------------------------------------+Тут первый косяк — Время — Коммуникатор прибавил ко времени slice 3 часа по Москве. А по идее тут должно быть реальное время опроса, на которое я получил архив, на данный момент это 10:15.
А вот в описании я должен указывать реальное время полученного архива, а не свои математические исправления, чтобы записать его в нужную точку.Опять же, Коммуникатор и WEB сейчас по Москве, а по факту могут быть в разных часовых поясах.
И получается, что получив время архива из ответа, если я отниму 7 часов (реальное время прибора) то это 16:00, сделаю смещение в Архиве 16 часов (опять же, надо лезть в настройки Архива, при том, что он не имеет метки времени кроме даты, по крайней мере утилита не показывает). То у себя в WEB я увижу запись на 19 часов, и только web с тем же часовым поясом покажет запись на 23 часа…В общем с этим барахлом надо что-то делать 🙂
21.07.2025 в 11:01 #39601
manjey73Участник1. Коммуникатору дали время и зону (через настройки) как бы не его собачье дело еще к чему-то приводить, где бы он не находился.
2. Вишенка на торте — я не могу создать ОДИН дневной архив под одни и те же приборы, если они находятся в разных часовых поясах, только при условии, если буду писать все в 0 часов дня. ну или в другое какое-то время дневного архива.
бр-р-р-р-р, в общем ахинея полная… в настройках так понимаю не хватит битов для масок архива, если использовать красиво…
21.07.2025 в 11:07 #39602
JurasskParkУчастникЯ никак не могу понять… Почему драйвер, когда приводит время к UTC, не важно в какой зоне он находится, у вас получаются разные даты?
21.07.2025 в 11:18 #39603
manjey73Участникесли бы я мог понять эту «логику» 🙂 нахрена надо что-то к чему-то приводить в Коммуникаторе, если серверу достаточно просто дать время, а он понимает, что это UTC, точнее ему плевать, он воспримет это как UTC, потому что с другим работать не умеет.
21.07.2025 в 11:20 #39604
manjey73УчастникПотому что у меня Сервер и Коммуникатор на моей машине, а я по Московскому времени, а прибор в Новосибирске, где +7 от UTC, при этом +4 к Москве, а приводить приходится в Коммуникаторе к UTC, которое +3.
Взрыв головного мозга обеспечен… 🙂
21.07.2025 в 12:44 #39605
manjey73Участникв общем сохраняю на 0:00 текущего дня суточный архив предыдущих суток.
Чтобы Суточный архив был один для всех с указанием времени архива.Другого пути нет. + эта непонятная процедура приведения к UTC в самом Коммуникаторе просто убивает — ЗАЧЕМ?
Нам известно время, известна TimeZone (ну относительно, так как приходится ее явно указывать). Рассчитать без получения или указания TimeZone разницу все равно невозможно, как бы нам не хотелось.И да, на будущие релизы. Откажитесь от маски архивов, лучше что-то вроде Списка Кодов архивов. типа List<ArchiveCode> чтобы можно было создать более 32-х штук (вроде этим значением ограничены)
вернее List<string> ArchiveCode, как там более правильнее будет.21.07.2025 в 13:39 #39615
MikhailМодераторИспользуйте отладчик и проверяйте прохождение данных по цепочке.
21.07.2025 в 14:32 #39620
manjey73Участникда почти разобрался. Вернее пришел к какому-то решению, учитывая, что со временем может не хватить просто списка Архивов из-за ограничения маски.
Вообще попробую сформулировать как я это все безобразие вижу на будущее.
1. Сервер, Коммуникатор, Web между собой должны отправлять не «Время» а объекты(структуры) «Время + TimeZone) тогда они будут знать кто где находится и приводить данные к своему времени или к UTC в зависимости от задачи.
2. Имеем Н-ный список приборов, время у которых прописано от TimeZone где они установлены. Так как приборы в большинстве своем ни сном ни духом о временной зоне, где их поставят. И как правило не умеют (потому что не знают) передавать TimeZone, то добавляем в настройки переменную этой самой TimeZone.
Соответственно Коммуникатор, получая от прибора время, время архива, берет из настроек TimeZone, упаковывает это все и уже потом отправляет Серверу.В общем смысл привести к унификации работы со временем, не вводя путаницу с непонятными преобразованиями в Коммуникаторе и т.д. Потому что время UTC это время прибора +- его зона, а тут тебе еще и Коммуникатор навязывает привести свое время к UTC, потому что с какого-то перепуга решил, что надо? я и так ему уже посчитал и выдал время в UTC.
3. Что касается БД дневных. В ней тоже не хватает времени и TimeZone. Тогда БД дневная может быть одна, даже есть в ней будут данные у каналов с разными метками времени. Сейчас вот такая штука:
Дневной Архив — неизвестна точка времени

-
Ответ изменён 1 год, 1 месяц назад пользователем
manjey73.
-
Ответ изменён 1 год, 1 месяц назад пользователем
-
АвторЗаписи
- Для ответа в этой теме необходимо авторизоваться.
