Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
12 дек 2024, 05:00

Перевод ДНЕЙ в формат N г. N м. N д.

Автор TesterLenovo, 21 ноя 2019, 09:04

0 Пользователей и 1 гость просматривают эту тему.

TesterLenovo

Всем доброго времени суток!:)

КАМИН Зарплата для бизнеса, версия 4.0

Прошу у вас помощи! Как решить такую задачку: есть 730 дней, нужно привести их к формату 2г. 0м. 0д.


wise

(0) используйте остаток от деления "%"
Представьте себе, какая была бы тишина, если бы люди говорили только то, что знают

LexaK

еще как вариант


лкДата = Дата(1,1,1) + (730) * 24 * 3600; 
Результат = Формат(лкДата,"ДФ='гг.ММ.дд'"); //это дата с учетом 0001,01,01
//убираем значение/представление пустой даты
лкМ = СтрРазделить(Результат,".");
Результат = "%1г. %2м. %3д.";
лкПоз = 0;
Для каждого лкД Из лкМ Цикл
   лкПоз = лкПоз + 1;
   Результат = СтрЗаменить(Результат,"%"+лкПоз,(Число(лкД)-1));
КонецЦикла;
Сообщить(Результат);

можно оформить в виде функци
если помогло нажмите: Спасибо!

Yotram

Как быть с високосными годами? В месяцах различное количество дней, т.е. эти 730 дней надо отсчитать с какой то даты, чтобы можно было корректно решить задачу.

Как вариант

ГодОтсчета = Год(Объект.ДатаОтсчета);
МесяцОтсчета = Месяц(Объект.ДатаОтсчета);
ДеньОтсчета = День(Объект.ДатаОтсчета);

Сутки = 24*60*60;

ДатаОтсчитанная = Объект.ДатаОтсчета + Объект.КоличествоДней * Сутки;

ГодОтсчитанный = Год(ДатаОтсчитанная);
МесяцОтсчитанный = Месяц(ДатаОтсчитанная);
ДеньОтсчитанный = День(ДатаОтсчитанная);

ГодРезультат = ГодОтсчитанный - ГодОтсчета;
МесяцРезультат = МесяцОтсчитанный - МесяцОтсчета;
ДеньРезультат = ДеньОтсчитанный - ДеньОтсчета;

ПредставлениеДМГ = Строка(ГодРезультат) + "г. " + МесяцРезультат + "м. " + ДеньРезультат + "д.";


p.s. обработка ниже

buketov.av

вот такой вариант, когда надо отображать время в часах, но нужное количество. большее чем в сутках, например 181ч 45м, вдруг пригодится )))

ВремяВСекундах         = ВремяВДвижении * 3600;
Дней                   = Цел(ВремяВСекундах / 86400);
Часов                  = Цел((ВремяВСекундах - (Дней * 86400))/60/60);
ЧасовВсего             = Цел(ВремяВСекундах / 3600);
МинВСекундах           = ВремяВСекундах - (Дней * 86400) - (Часов * 3600);
Минут                  = Окр(МинВСекундах / 60);
ВремяПрописью          = Строка(ЧасовВсего) + "ч " + Строка(Минут) + "м";
ВремяВДвиженииПрописью = ВремяПрописью;

Похожие темы (5)

Рейтинг@Mail.ru

Поиск