![]() |
![]() |
![]() |
|
Как посчитать количество дней в интервале ? | ☑ | ||
---|---|---|---|---|
0
Selma
05.11.08
✎
10:43
|
подскажите пожалуйста, есть ли какая нибудь обработка, которая быстро посчитает, сколько дней в интрвале от Дата1 по Дата2?
|
|||
1
Greeen
05.11.08
✎
10:44
|
Дата2 - Дата1
|
|||
2
chelentano
05.11.08
✎
10:44
|
Дата2-Дата1
|
|||
3
Selma
05.11.08
✎
10:47
|
ой, правда...)) Спасибо, не знала. А я тут через запрос считала.((
|
|||
4
de Bug
05.11.08
✎
10:49
|
Дата2 - Дата1 + 1
|
|||
5
Злопчинский
05.11.08
✎
10:50
|
в интервале "5 ноября 2008 г - 5 ноября 2008 г" - сколько дней...???
|
|||
6
rs_trade
05.11.08
✎
10:51
|
(0) в конфигурации ЗиК есть такая функция в глобальнике...
|
|||
7
rs_trade
05.11.08
✎
10:54
|
Собственно вот она...
//****************************************************************************** // глРазобратьРазностьДат(Дата1,Дата2,Лет,Месяцев,Дней) // // Параметры: // Дата1 - первая дата (более поздняя, часто текущая, стаж определяется по состоянию на эту дату) // Дата2 - вторая дата (ранняя дата, с нее начинается "течение" стажа) // Лет - в этот параметр будет записано кол-во лет между двумя датами (Дата1-Дата2) // Месяцев - в этот параметр будет записано кол-во месяцев между двумя датами (Дата1-Дата2) // Дней - в этот параметр будет записано кол-во дней между двумя датами (Дата1-Дата2) // // Описание: // Процедура разбирает две даты и возвращает в параметрах кол-во лет, месяцев и дней // между двумя датами (Дата1-Дата2) // // алгоритм Пенсионного фонда //Мк = ДатаМесяц(Дата1); //Гк = ДатаГод(Дата1); //Если ДатаЧисло(Дата1) - ДатаЧисло(Дата2) < 0 Тогда // Дней = ДатаЧисло(Дата1) - ДатаЧисло(Дата2) + 30; // Мк = Мк - 1; //Иначе // Дней = ДатаЧисло(Дата1) - ДатаЧисло(Дата2); //КонецЕсли; //Если Мк - ДатаМесяц(Дата2) < 0 Тогда // Месяцев = Мк - ДатаМесяц(Дата2) + 12; // Гк = Гк - 1; //Иначе // Месяцев = Мк - ДатаМесяц(Дата2); //КонецЕсли; //Лет = Гк-ДатаГод(Дата2); //Дней = Дней + 1; //Если Дней >= 30 Тогда // Дней = 0; // Месяцев = Месяцев + 1; //КонецЕсли; //Если Месяцев = 12 Тогда // Месяцев = 0; // Лет = Лет + 1 //КонецЕсли; Процедура глРазобратьРазностьДат(Знач Дата1,Знач Дата2,Лет=0,Месяцев=0,Дней=0) Экспорт Лет = 0; Месяцев = 0; Дней = 0; Если Дата1>Дата2 Тогда ВременнаяДата = Дата1; Если ДатаЧисло(ВременнаяДата)<ДатаЧисло(Дата2) Тогда Дней = ВременнаяДата-ДобавитьМесяц(ВременнаяДата,-1); ВременнаяДата = ДобавитьМесяц(ВременнаяДата,-1); КонецЕсли; Если ДатаМесяц(ВременнаяДата)<ДатаМесяц(Дата2) Тогда ВременнаяДата = ДобавитьМесяц(ВременнаяДата,-12); Месяцев = 12; КонецЕсли; Лет = Макс( ДатаГод (ВременнаяДата)-ДатаГод (Дата2),0); Месяцев = Макс(Месяцев +ДатаМесяц(ВременнаяДата)-ДатаМесяц(Дата2),0); Дней = Макс(Дней +ДатаЧисло(ВременнаяДата)-ДатаЧисло(Дата2),0); // скорректируем отображаемое значение, если "вмешалось" разное количество дней в месяцах Если Дата2 <> (ДобавитьМесяц(Дата1,-Лет*12-Месяцев)-Дней) Тогда Дней = Дней + (КонМесяца(Дата2)-НачМесяца(Дата2)) - (КонМесяца(ДобавитьМесяц(Дата1,-1))-НачМесяца(ДобавитьМесяц(Дата1,-1))); КонецЕсли; КонецЕсли; КонецПроцедуры // глРазобратьРазностьДат |
|||
8
NikVars
05.11.08
✎
11:13
|
(6) (7) Если говорить о количестве дней и только о количестве дней, то считать только как (4). Я с ним согласен (но с Дата1 по Дата1 включая обе даты в период!)! А про лет, месяцев вопроса не было.
|
|||
9
Злой Бобр
05.11.08
✎
11:14
|
(7) Жесть
|
|||
10
rs_trade
05.11.08
✎
11:15
|
(8) да мало ли...вдруг человеку пригодиться и такой вариант...
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |