lers
25.07.2012, 05:42
Добрый день.
Если при чтении расширенных архивов воспользоваться формулой, которая приведена в документе Т10.06.59РД в пункте 5.3.2, считываются данные не за ту дату, для которой рассчитывался маркер.
Опытным путём выяснили, что данные считываются правильно если к полученному по формуле значению Т прибавить ещё 3. Скажите в чём может быть причина?
Вот код, которая применяется для расчёта маркера. Обратите внимание, что к значению t прибавляется ещё тройка. В этом случае данные считываются корректно.
int m = (dtRead.Month < 3) ? (dtRead.Month + 13) : (dtRead.Month + 1);
int y = (dtRead.Month < 3) ? (dtRead.Year - 1) : dtRead.Year;
int t = (int)(365.25F * y) + (int)(30.6F * m) + dtRead.Day - 694066 + 3;
int marker = t % 42;
Если при чтении расширенных архивов воспользоваться формулой, которая приведена в документе Т10.06.59РД в пункте 5.3.2, считываются данные не за ту дату, для которой рассчитывался маркер.
Опытным путём выяснили, что данные считываются правильно если к полученному по формуле значению Т прибавить ещё 3. Скажите в чём может быть причина?
Вот код, которая применяется для расчёта маркера. Обратите внимание, что к значению t прибавляется ещё тройка. В этом случае данные считываются корректно.
int m = (dtRead.Month < 3) ? (dtRead.Month + 13) : (dtRead.Month + 1);
int y = (dtRead.Month < 3) ? (dtRead.Year - 1) : dtRead.Year;
int t = (int)(365.25F * y) + (int)(30.6F * m) + dtRead.Day - 694066 + 3;
int marker = t % 42;