
Сообщение от
ntro123
Добрый вечер.
Речь пойдет о ПЛК 323, бибки CAA DTUtility 3.4.4.0 (или просто DTU).
Прямо перед НГ меня ждал подарок.
На сервер пришла дата: 2153-02-06 06:28:16.
Не буду вдаваться в подробности как я выяснил, что это не у меня руки кривые, (т.е. полгода все исправно приходило), а проблемы DTU бибки, а именно ф-ции DTU.DTSplit(). Скажу лишь? что в сообщение серверу передается DT самого ПЛК (нормальное, не 2153+ год), а вырезается в каких-либо сообщения год из даты функцией DTU.DTSplit().
Если ей скормить 2016-12-31 00:00:00 (именно эту дату, без разницы какое время) мы получим 2153-02-06 06:28:16.
Если вычесть эти 2 даты (в секундах), мы получим 4294967296 = 2^32. Где-то у немцев сдвиг на 4 байта получается.
Но, таких дат в промежуток с 2017 по 2099 будет 20 штук.
След. дата: 2020-12-31 00:00:00 мы получим 2157 г. и т.п.
Подскажите как обойтись без костылей? мб версия библиотеки старая и эта ошибка уже исправлена? мб есть аналоги данной функции?
PS DTU.DateSplit() не проверял, возможна таже ошибка.