Количество полных лет между двумя датами #448288


#0 by Baloven
Чтот не могу сообразить по поводу сабжа? как посчитать количество полных лет между двумя датами? :(
#1 by Rie
Вычти годы и поправь на 1 по результатам сравнения номеров дней в году.
#2 by Baloven
хм.. в принципе понял, только все же проверку нужно делать не номера дня в году а сравнивать номера месяца и номера дня в месяце - иначе получим глюк в високосном году в одни и те же день месяца после 29 февраля. за подсказку спасибо
#3 by Rie
Тогда может быть так:
#4 by Толич
#5 by Baloven
адназначно не правильно напрмиер Дата1 = 01.02.2001 Дата2 = 15.01.2009 тогда получится результат 8 лет по вашему - а это не так!!!
#6 by Rie
Однако не проще ли вместо Число(Прав(Строка(Дата1),4) написать Год(Дата1)?
#7 by Baloven
хоть так, хоть эдак - вариант не даст правильного результата
#8 by Толич
Так разница 8 лет и получается. Проще. Проснуться надо)) Почему?
#9 by Rie
Нужно число _полных_ лет. А их в приведенном примере прошло 7.
#10 by Baloven
имхо совсем правильно как писал (но и считаю практичным вариантом) как-то так если нигде не ошибся :) всем спасибо пошел проверять
#11 by Толич
2009-2001=8. Откуда 7 лет?
#12 by Рэйв
Процедура глРазобратьРазностьДат(Знач Дата1,Знач Дата2,Лет=0,Месяцев=0,Дней=0) Экспорт
#13 by Рэйв
блин..не все скопировалось. Вот так : --------------- Процедура глРазобратьРазностьДат(Знач Дата1,Знач Дата2,Лет=0,Месяцев=0,Дней=0) Экспорт
#14 by Baloven
собственно почти это я и написал :)
#15 by Baloven
Дата1 = 01.02.2001 Дата2 = 15.01.2009 не наступил в данном варианте 8 год - он пойдет через 16 дней, т.е. полный 8ой год будет идти только с даты 15.01.2009 а у вас уже на Дату2 8 ПОЛНЫХ ЛЕТ!!! - это неправильно
#16 by Baloven
если у вас день рождения 15 декабря 1976 года то вам сейчас еще нет 33 полных лет :)
#17 by Trance_1C
#18 by Trance_1C
Всех с добрым утром :)
#19 by Толич
Монстр.
#20 by dk
так что там с полными / неполными годами? )))
#21 by Baloven
рабочие варианты
#22 by dk
т.е. правильно отрабатывает полные/ неполные года?
#23 by Trance_1C
Нет он покажет 8
#24 by Baloven
:( хм а я последний не проверял
#25 by AlStorm
А теперь вопрос на стотыщ: А если года високосные? :))))
#26 by dk
отстреливать таких деньрожденцев ))
#27 by Trance_1C
#28 by dk
вычеркиваем из монстров )
#29 by Trance_1C
+ а вот этот покажет точную разницу полных лет
#30 by Trance_1C
+ Без поллитры не читать :)
#31 by dk
високосные учел?
#32 by Trance_1C
Так будет читабельней, високосные учитываются в общей массе дней разницы,
#34 by Trance_1C
Работает но там просто происходит 2009-2001=8 там не учитывается что в 2001 был февраль, а в 2009 январь просто даты лет вычитаются....
#35 by Baloven
опять же "/365" а если високосный? :
#36 by Baloven
не пойму чем вам не нравится-то или ? погнял (в основном вроде все ОК
#37 by Baloven
а может кто-нибудь здесь подсказать?
#38 by Trance_1C
Ну хорошо вот здесь учитываются високосные достаточно точно.
#39 by 2mugik
хм.. А если 2009.12.01 и 2008.01.01 сработает?
#40 by MoneG
это фигня.. а вот если Дата(2012,12,12) сработает? )
#41 by dk
"достаточно точно" надо будет запомнить ))
#42 by Trance_1C
если это начало периода, то нет :(
#43 by Туц
#44 by Туц
Интересен случай с 29.02.08 - 28.02.09
#45 by Baloven
имхо в данном варианте год еще не прошел - так как он пройдет 01.03.2009 и рузумеется результат будет 1 год и 1 месяц (должен быть), но в контексте поставленного вопроса (полных лет) - ответ собственно что не прошло полного года
#46 by Baloven
сорри 1 год и 1 день :)
Тэги:
Ответить:
Комментарии доступны только авторизированным пользователям

В этой группе 1С