Имя: Пароль:
1C
 
Как перевести кол-во дней в (дни,месяцы,годы)?
0 Tarantino
 
16.06.06
09:53
?
1 Tarantino
 
16.06.06
09:54
Сложность в том что кол-во дней может быть разным в месяце,в годе....
2 ZolotarevAA
 
16.06.06
09:56
(0) Не очень понял что хочешь, приведи пару примеров "перевода".
3 Tarantino
 
16.06.06
09:57
23234243242542 сек     =      2 года,3 месяца,6 дней
4 Tarantino
 
16.06.06
09:57
А это я получил 23234243242542 сек =Дата1-Дата2
5 avmlvm
 
16.06.06
09:59
(1) И чЁ, что разная? Как это влияет...

если событие произошло 2 года 3 месяца  6 дней 13 часов 12 минут 52 сек назад.. так эта цифра не измениться ни в высокосный год ни в обычный...
6 Мелкий бес
 
16.06.06
10:02
пример для 500 дней    
   НачДата = '00010101';
   МояДата = НачДата+500*24*60*60;
   Лет = Год(МояДата);
   Месяцев = Лет*12+Месяц(МояДата);
7 Поиском
 
16.06.06
10:02
пользоваться не учили?

v8: Определение кол-во дней
8 AndrewHV
 
16.06.06
10:02
Вот, нашел в конфигурации "Зарплата и Кадры" (v7).

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

КонецПроцедуры    // глРазобратьРазностьДат
9 Rovan
 
гуру
16.06.06
10:03
(0) из 7.7
Процедура глРазобратьРазностьДат(Знач Дата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)));
       КонецЕсли;
   КонецЕсли;

КонецПроцедуры    // глРазобратьРазностьДат
10 Ёжик в тумане
 
16.06.06
10:09
Надо знать либо дату начала, либо дату конца периода.
11 Мелкий бес
 
16.06.06
10:10
для известных Дата1 и Дата2
КоличествоЛет = Год(Дата1)-Год(Дата2)
КоличествоМесяцев = КоличествоЛет*12 + Месяц(Дата1)-Месяц(Дата2)
КоличествоДней = (Дата1-Дата2)/(24*60*60)
12 Tarantino
 
16.06.06
10:27
Благодарю всех!Много интересного!Воспользуюсь(11)!
13 Tarantino
 
16.06.06
10:43
Воспользовался Процедурой Разобрать разность дат-взял из ЗуП, в УПП не такой!
14 vde69
 
16.06.06
10:44
(11) КоличествоМесяцев = КоличествоЛет*12 + Месяц(Дата1)-Месяц(Дата2)
не катит, поскольку могут быть переходящие через год даты
15 AndrewHV
 
16.06.06
10:46
Вот, нашел в конфигурации "Зарплата и Кадры" (v7).

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

КонецПроцедуры    // глРазобратьРазностьДат
16 vde69
 
16.06.06
10:46
(14) сори... катит
17 AndrewHV
 
16.06.06
10:46
Прикол :), я думал у меня в первый раз не получлось. :)))