Имя: Пароль:
1C
 
Как вычислить количество дней между датами.
0 vlad71
 
15.05.06
11:42
В 1С 7.7. можно было просто узнать количество дней как Дата1-Дата2

Посдкажите как это делается в 1С 8.? Необходимо узнать количество дней например с 11 января 2006 года по 18 мая 2006 года.

Формат Даты "Дата и время".
1 ТелепатБот
 
гуру
15.05.06
11:42
2 avmlvm
 
15.05.06
11:44
Арифметические операции с датами

При вычислении разницы между датами результат - это количество СЕКУНД между ними.

Для вычисления разницы в СУТКАХ нужно количество секунд разделить на 86400 (т.е. 24*60*60).

Для получения разницы в рабочих днях нужно завести календарь (регистр сведений) и отсчитывать дни по нему.

При сложении/вычитании даты и какого-то числа оно рассматривается как количество СЕКУНД.
3 vlad71
 
15.05.06
11:52
понял, спасибо.
4 ЗабылПароль
 
15.05.06
11:52
КоличествоДней = День(ДатаНач) - День(ДатаКон)
5 Волшебник
 
модератор
15.05.06
11:54
(4) Да, смешно.
6 and2
 
15.05.06
11:56
(5)Грустно.
7 Bazooka
 
15.05.06
12:10
(0) КоличествоДней = (НачалоДня(Дата1)-НачалоДня(Дата2))/86400;
8 LOD
 
15.05.06
12:23
(4) (7) А если между днями разница в 2 года ?
Что получим ? ;)
9 ЗабылПароль
 
15.05.06
12:27
+ (4) у меня с годами так получалось Год(ДатаКон) - Год(ДатаНач)

Вот вам :о(


//Высчитывает разницу в днях между двумя датами
Функция РазницаВДнях(Дата1, Дата2)
   Если Дата1 > Дата2 Тогда
       Возврат Окр((Дата1 - Дата2)/86400);
   Иначе
       Возврат Окр((Дата2 - Дата1)/86400);
   КонецЕсли;
КонецФункции;

Если разница два года то сколько дней прошло сколько и выдает
10 Salvador Limones
 
15.05.06
12:29
Процедура ПолучитьСтажЗаПериод(Знач ДатаОкончанияПериода,
           Знач ДатаНачалаПериода,
           Лет=0, Месяцев=0, Дней=0) Экспорт
   Если ДатаОкончанияПериода >= ДатаНачалаПериода тогда
       Лет1 = Год(ДатаОкончанияПериода);
       Месяцев1 = Месяц(ДатаОкончанияПериода);
       Если НачалоДня(ДатаОкончанияПериода) <> НачалоДня(КонецМесяца(ДатаОкончанияПериода)) Тогда
           Дней1 = День(ДатаОкончанияПериода);
       Иначе
           Дней1 = 30;//В каждом месяце ровно 30 дней
       КонецЕсли;

       Лет2 = Год(ДатаНачалаПериода);
       Месяцев2 = Месяц(ДатаНачалаПериода);
       Если НачалоДня(ДатаНачалаПериода) <> НачалоДня(КонецМесяца(ДатаНачалаПериода)) Тогда
           Дней2 = День(ДатаНачалаПериода);
       Иначе
           Дней2 = 30;//В каждом месяце ровно 30 дней
       КонецЕсли;

       Лет = Лет1 - Лет2;
       Месяцев = Месяцев1 - Месяцев2;
       Дней = Дней1 - Дней2 + 1; //1 день на увольнение
   Иначе
       Лет = 0;
       Месяцев = 0;
       Дней = 0;
   КонецЕсли;
КонецПроцедуры