• 15 апреля стартует «Курс «SQL-injection Master» ©» от команды The Codeby

    За 3 месяца вы пройдете путь от начальных навыков работы с SQL-запросами к базам данных до продвинутых техник. Научитесь находить уязвимости связанные с базами данных, и внедрять произвольный SQL-код в уязвимые приложения.

    На последнюю неделю приходится экзамен, где нужно будет показать свои навыки, взломав ряд уязвимых учебных сайтов, и добыть флаги. Успешно сдавшие экзамен получат сертификат.

    Запись на курс до 25 апреля. Получить промодоступ ...

даты 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

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



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

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