Murzik написал(а):
360 - 30 стандартный банковский календарь, по-крайней мере был
и ни один банк в примере, который привела Galkf не подсчитает на 1 день больше.
При чем тут банки я не понял. Если Вы внимательно посмотрите в описание услуи, которые предоставлют банки, то там обычно все достаточно ясно описано. Причем так, что не допускает двоякого толкования. Например, срок депозитов обычно указываются в днях, то есть не 3 месяца, а 91 день, не год, а 367 день.
Когда дело касается кредитов, то там упоминается количество дней в году, причем обычно это выглядит так "365(366)".
Откуда взялся "стандартный банковский календарь" и где он применятся я не знаю.
Пример, который Вы привели выше, касается немного другой стороны этого вопроса. В САПе расчет стажа разбит на 2 этапа:
1. Выделение периодов и оценка их длительности. Здесь мы оцениваем длительность периода так как хотим - в дня, в г.м.д, с учетом календарной длительности месяцов или на основе месяца в 30 дней. Как угодно. Изначано вопрос относился именно к этому этапу
2. Расчет итогового стажа на основе длительности периодов. На этом этапе из цепочек длительностей необходимо вычислить итоговой стаж. Причем технически это сделано так, что на вход подаются только длительности, ни каких дат тут уже нет. Итоговой стаж тоже можно как угодно. Вот только на основе календарных дней считать уже не получиться - дат нет и про какой месяц идет речь уже не узнать. Поэтому на этом этапе считается что в месяце 30 дней (по-моему там в исходнике где-то просто константа зашита).
Работу второго этапа и демонстируется Ваш пример. Только про это речи не было. Кстати, при оценки периодов на основе календарных дней результат работы будет немного другой, хотя итог такой же.
1. Оценка периодов
01.01.2007 - 30.01.2007 0м 30 д
01.02.2007 - 28.02.2007 1м 0 д
02.03.2007 - 31.03.2007 0м 30 д
02.04.2007 - 31.05.2007 1м 30 д
02.06.2007 - 31.07.2007 1м 30 д
02.08.2007 - 31.08.2007 0м 30 д
02.09.2007 - 31.10.2007 1м 30 д
02.11.2007 - 31.12.2007 1м 30 д
2. Расчет длительности
все складывается и получается 5 м и 210 дней. затем идет процедура выравнивания - дни делятся на 30, целая часть идет в месяцы, остаток от деления в дни. Получаем 12 м и 0 дней. Аналогично с месяцами.
Итог 1г 0м 0д.
Но что из этого следует?
У нас пользователи гораздо болезненей реагируют на сдвиг даты начала отсчета стажа - если начало стажа 05 число месяца, то следующий год тоже должен начаться 05-го числа того же месяца