Вход | Регистрация

1С:Предприятие ::

Метки:дата и время

Отображения интервала между датами в виде "1 год 4 месяца 25 дней"

Я
   Olegandr
 
04.08.04 - 15:16
Как получить строку "расстояния" между двумя датами (01.01.2000 и 25.04.2001) в виде, например, "1-лет 4-месяц 25-день"
 
  Рекламное место пустует
   alxkorvin
 
3 - 04.08.04 - 19:20
Взято из ЗиК

//******************************************************************************

//    глРазобратьРазностьДат(Дата1,Дата2,Лет,Месяцев,Дней)
//

//    Параметры:
//        Дата1    - первая дата (более поздняя, часто текущая, стаж определяется по состоянию на эту дату)

//        Дата2    - вторая дата (ранняя дата, с нее начинается "течение" стажа)
//        Лет        - в этот параметр будет записано кол-во лет между двумя датами (Дата1-Дата2)

//        Месяцев    - в этот параметр будет записано кол-во месяцев между двумя датами (Дата1-Дата2)
//        Дней    - в этот параметр будет записано кол-во дней между двумя датами (Дата1-Дата2)

//
//    Описание:

//        Процедура разбирает две даты и возвращает в параметрах кол-во лет, месяцев и дней
//        между двумя датами (Дата1-Дата2)

//
Процедура глРазобратьРазностьДат(Знач Дата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)));
        КонецЕсли;
    КонецЕсли;

КонецПроцедуры   // глРазобратьРазностьДат


Список тем форума
Рекламное место пустует   Рекламное место пустует
Миста — веселый ресурс со своими эксклюзивными тараканами Ymryn
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Ветка сдана в архив. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.
Рекламное место пустует