Кодене :)
41 отговора
0 прегледа
Кодене :)
Проста задача - години между две дати.
имаме функция - age(date1, date2) Имплементация?
Примерно на псевдокод един вариант би бил:
Как сме сигурни, че тва бачка :) И подходящ интерфейс ли е въвеждането на знак?
I have sold less books on sex than Stephen Hawking has on physics -- Madonna
имаме функция - age(date1, date2) Имплементация?
Примерно на псевдокод един вариант би бил:
def age(date1, date2)
sign = 1 # assume date1 is earlier than date2
sign, date1, date2 = -1, date2, date1 if date1 > date2
age = date2.year - date1.year
if date2.month < date1.month ||
(date2.month == date1.month && date2. day < date1.day
age -= 1
end
sign * age
end
Как сме сигурни, че тва бачка :) И подходящ интерфейс ли е въвеждането на знак?
I have sold less books on sex than Stephen Hawking has on physics -- Madonna
Re: Кодене :)
Библиотеки не ползваш ли? Вадиш милисекундите м/у датите и делиш на константа.
Re: Кодене :)
Дулжината на годината не е константа. Да не коментираме преди григорийй, или след него
Без библиотеки си е проект ппне за 6 месеца
Без библиотеки си е проект ппне за 6 месеца
Re: Кодене :)
След 1970 му задаваш ден, месец, евент. и часове. Връща ти един голям номер с броя милисекунди от заветната нулева 1970. Задаваш и вземаш номера и на новата дата. Вадиш ги, и получаваш в милисекунди разликата между датите. После делиш на 365*24*60*60*1000. Номера с високосните е отразен от библиотеката. Ся, ако разликата е баш 1 ден м/у високосна и нормална - клиентът да каже сребърна ли ще я пише, или златна, по избор
Не се сещам друго, ако пропускам нещо - кажи.
Re: Кодене :)
Делиш дните на дължината на тропическата година (365.2422) и закръгляваш на цяло число. Функцията ще е точна назад докъм мезозойската ера. :)
А за мезозойската ера и по-надолу ще трябва да се гледат астрономически справочници колко е бил дълъг деня тогава.
А за мезозойската ера и по-надолу ще трябва да се гледат астрономически справочници колко е бил дълъг деня тогава.
Re: Кодене :)
+1 приятел, щом даваш дата до мезозойската ера и делиш на нецяло 365,00
Karmic ~ slap! <: your ears ~ pierce:.
Karmic ~ slap! <: your ears ~ pierce:.
Re: Кодене :)
доколкото виждам интересува те отговор на въпроса "на колко години е даден човек" по рождена дата и днешна дата. тоест, прецизните методи с разни астрономии не бачкат, простия ежедневен:
NE SUTOR ULTRA CREPIDAM
int age=date2.year-date1.year;
if (date2.month>date1.month)return age;
if (date2.month<date1.month)return age-1;
if (date2.day>date1.day)return age;
if (date2.day<date1.day)return age-1;
NE SUTOR ULTRA CREPIDAM
Re: Кодене :)
очевидно става въпрос за функция пресмятаща юридическата възраст, примерно проверка дали даден човек има право на глас. твоя метод ще доведе до проблеми, генерално ползването на флоат във финанси, право и други малоумни области води до проблеми.
NE SUTOR ULTRA CREPIDAM
NE SUTOR ULTRA CREPIDAM
Re: Кодене :)
+1 brevity
+1 simplicity
+1 readability
---
total score: +3, brevity, simplicity, readability
Karmic ~ slap! <: your ears ~ pierce:.
+1 simplicity
+1 readability
---
total score: +3, brevity, simplicity, readability
Karmic ~ slap! <: your ears ~ pierce:.
Re: Кодене :)
Няма информация за фреймуърка.
Най-очевидно е:
diff = date1-date2;
age = diff.toDays() / 365;
diff = date1-date2;
age = diff.toDays() / 365;
Re: Кодене :)
Винаги ползвам дабъли, вместо флоут. За финанси - децимал.
Ако става въпрос за юридическа възраст, то някой роден на 29ти февруари 1996 кога ще навърши 18 години - на 28ми февруари 2014 или на 1ви март 1024?
Ако става въпрос за юридическа възраст, то някой роден на 29ти февруари 1996 кога ще навърши 18 години - на 28ми февруари 2014 или на 1ви март 1024?
Re: Кодене :)
на 29-ти февруари 2068, кога иначе.
Al: A Bundy never wins, but a Bundy never quits.
Al: A Bundy never wins, but a Bundy never quits.
Re: Кодене :)
Е да де ама на 1ви март 1996 се е родило друго диване и то очевидно е с един ден по-малко от нашето. Защо тогава ще си празнуват рождените дни заедно?
Re: Кодене :)
казах предполагам :)
не знам как е уредено това, и ако има избори на 28ми дали ще бъде включен в списъците. но със сигурност не е със смятане на астрономическата възраст.
NE SUTOR ULTRA CREPIDAM
не знам как е уредено това, и ако има избори на 28ми дали ще бъде включен в списъците. но със сигурност не е със смятане на астрономическата възраст.
NE SUTOR ULTRA CREPIDAM
Re: Кодене :)
6 са много. 4. както казах - 18 години за високосните идват към 72 за другите.
Al: A Bundy never wins, but a Bundy never quits.
Al: A Bundy never wins, but a Bundy never quits.
Re: Кодене :)
Или пък да се забрани на родените на 29 февруари да навършат години, които не са кратни на 4?
От 0 скачат на 4, 8, 12, 16 .. Ако не се случи 2000та някъде измежду тях.
От 0 скачат на 4, 8, 12, 16 .. Ако не се случи 2000та някъде измежду тях.
Re: Кодене :)
бе аз не разбирам ква е драмата. години се навършват на датата.
значи тоя става на 1 година през 2000, 2 през 2004, 3 през 2008, 4 през 2012, сега вече наближава 5 години и е готов за предучилищна.
Al: A Bundy never wins, but a Bundy never quits.
значи тоя става на 1 година през 2000, 2 през 2004, 3 през 2008, 4 през 2012, сега вече наближава 5 години и е готов за предучилищна.
Al: A Bundy never wins, but a Bundy never quits.