• Курсы Академии Кодебай, стартующие в мае - июне, от команды The Codeby

    1. Цифровая криминалистика и реагирование на инциденты
    2. ОС Linux (DFIR) Старт: 16 мая
    3. Анализ фишинговых атак Старт: 16 мая Устройства для тестирования на проникновение Старт: 16 мая

    Скидки до 10%

    Полный список ближайших курсов ...

даты 1с77

  • Автор темы lira89
  • Дата начала
L

lira89

Есть две даты ДатаНачала и ДатаКонца. Надо посчитать количество месяцев между ними. Когда просто делаешь вычитание ДатаКонца-ДатаНачала, то в результате получаем количество дней, а нужно количество месяцев. Подскажите, может есть метод или надо как-то по-другому?
 
V

vbs

Если особая точность не нужна, раздели на 30. В противном случае используй ДатаМесяц и ДатаЧисло
 
T

TimeDontWait

Есть фукнция для этого с типовой конфы:
Код:
Процедура глРазобратьРазностьДат(Знач Дата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)));
КонецЕсли;
КонецЕсли;
КонецПроцедуры	// глРазобратьРазностьДат
Под нее подстраиваеш свою для расчета месяцев:
Код:
Функция глРасчетМесяцев(Знач ДатаСтажа,ТекстСтажа,Лет=0,Месяцев=0,Дней=0) Экспорт
Лет = 0; Месяцев = 0; Дней = 0;
// если в тексте стажа пустая строка, то стаж не задан
Если ПустаяСтрока(ТекстСтажа)=1 Тогда
Возврат "<<Стаж не задан>>"
КонецЕсли;
глРазобратьРазностьДат(ДатаСтажа,Дата(ТекстСтажа),Лет,Месяцев,Дней);
Возврат " "+Месяцев+" " //или что хочеш

КонецФункции
 
O

olga13

Я считаю так:

КолМес = (ДатаМесяц(ВыбКонПериода) - ДатаМесяц(ВыбНачПериода)) + (ДатаГод(ВыбКонПериода) - ДатаГод(ВыбНачПериода)) * 12 + 1;
 
G

gorlanovmax

а еще добрые люди написали вот такую обработку:



очень удобная вещь
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!