Время что дышло

Просмотр 11 сообщений - с 46 по 56 (из 56 всего)
  • Автор
    Записи
  • #39594
    manjey73
    Участник

    Какая-то фигня со временем. Моей логики в голове не хватает понять, как, где и что надо делать, чтобы запись попала в нужную точку.
    Меняешь в одном месте, пропадает в другом, что-то делаешь в другом, в первом ни черта не меняется и т.п.

    Думал разобрался уже, а вот фиг вам называется…

    • Ответ изменён 1 год, 1 месяц назад пользователем manjey73.
    • Ответ изменён 1 год, 1 месяц назад пользователем manjey73.
    • Ответ изменён 1 год, 1 месяц назад пользователем manjey73.
    #39598
    manjey73
    Участник

    Как из кода проверить, что slice записался? а не был проигнорирован ?

    #39599
    manjey73
    Участник

    В общем через задницу все. Считал архив за 15.07 23:00
    Web отображает его на 16.07 2:00 (прибавил 3 часа)

    какие хитросплетения манипуляций надо сделать, чтобы время записалось и отобразилось в одной точке времени при работе со slice?

    Всем выставлять время UTC в WEB не предлагать, это костыль костылей…

    #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 часа…

    В общем с этим барахлом надо что-то делать 🙂

    #39601
    manjey73
    Участник

    1. Коммуникатору дали время и зону (через настройки) как бы не его собачье дело еще к чему-то приводить, где бы он не находился.

    2. Вишенка на торте — я не могу создать ОДИН дневной архив под одни и те же приборы, если они находятся в разных часовых поясах, только при условии, если буду писать все в 0 часов дня. ну или в другое какое-то время дневного архива.

    бр-р-р-р-р, в общем ахинея полная… в настройках так понимаю не хватит битов для масок архива, если использовать красиво…

    #39602
    JurasskPark
    Участник

    Я никак не могу понять… Почему драйвер, когда приводит время к UTC, не важно в какой зоне он находится, у вас получаются разные даты?

    #39603
    manjey73
    Участник

    если бы я мог понять эту «логику» 🙂 нахрена надо что-то к чему-то приводить в Коммуникаторе, если серверу достаточно просто дать время, а он понимает, что это UTC, точнее ему плевать, он воспримет это как UTC, потому что с другим работать не умеет.

    #39604
    manjey73
    Участник

    Потому что у меня Сервер и Коммуникатор на моей машине, а я по Московскому времени, а прибор в Новосибирске, где +7 от UTC, при этом +4 к Москве, а приводить приходится в Коммуникаторе к UTC, которое +3.

    Взрыв головного мозга обеспечен… 🙂

    #39605
    manjey73
    Участник

    в общем сохраняю на 0:00 текущего дня суточный архив предыдущих суток.
    Чтобы Суточный архив был один для всех с указанием времени архива.

    Другого пути нет. + эта непонятная процедура приведения к UTC в самом Коммуникаторе просто убивает — ЗАЧЕМ?
    Нам известно время, известна TimeZone (ну относительно, так как приходится ее явно указывать). Рассчитать без получения или указания TimeZone разницу все равно невозможно, как бы нам не хотелось.

    И да, на будущие релизы. Откажитесь от маски архивов, лучше что-то вроде Списка Кодов архивов. типа List<ArchiveCode> чтобы можно было создать более 32-х штук (вроде этим значением ограничены)
    вернее List<string> ArchiveCode, как там более правильнее будет.

    • Ответ изменён 1 год, 1 месяц назад пользователем manjey73.
    • Ответ изменён 1 год, 1 месяц назад пользователем manjey73.
    #39615
    Mikhail
    Модератор

    Используйте отладчик и проверяйте прохождение данных по цепочке.

    #39620
    manjey73
    Участник

    да почти разобрался. Вернее пришел к какому-то решению, учитывая, что со временем может не хватить просто списка Архивов из-за ограничения маски.

    Вообще попробую сформулировать как я это все безобразие вижу на будущее.

    1. Сервер, Коммуникатор, Web между собой должны отправлять не «Время» а объекты(структуры) «Время + TimeZone) тогда они будут знать кто где находится и приводить данные к своему времени или к UTC в зависимости от задачи.
    2. Имеем Н-ный список приборов, время у которых прописано от TimeZone где они установлены. Так как приборы в большинстве своем ни сном ни духом о временной зоне, где их поставят. И как правило не умеют (потому что не знают) передавать TimeZone, то добавляем в настройки переменную этой самой TimeZone.
    Соответственно Коммуникатор, получая от прибора время, время архива, берет из настроек TimeZone, упаковывает это все и уже потом отправляет Серверу.

    В общем смысл привести к унификации работы со временем, не вводя путаницу с непонятными преобразованиями в Коммуникаторе и т.д. Потому что время UTC это время прибора +- его зона, а тут тебе еще и Коммуникатор навязывает привести свое время к UTC, потому что с какого-то перепуга решил, что надо? я и так ему уже посчитал и выдал время в UTC.

    3. Что касается БД дневных. В ней тоже не хватает времени и TimeZone. Тогда БД дневная может быть одна, даже есть в ней будут данные у каналов с разными метками времени. Сейчас вот такая штука:

    Дневной Архив — неизвестна точка времени

    1

    • Ответ изменён 1 год, 1 месяц назад пользователем manjey73.
Просмотр 11 сообщений - с 46 по 56 (из 56 всего)
  • Для ответа в этой теме необходимо авторизоваться.