plxz0r Skrevet 4. april 2008 Del Skrevet 4. april 2008 Klarer dere å se feilen? DateTime comparisonDate = new DateTime(1958, 01, 01); //år, mnd, dag DateTime comparisonDateNow = DateTime.Now; int age = 0; if (comparisonDate.Date < DateTime.Now) { age = DateTime.Now.Year - comparisonDate.Year; } else { age = DateTime.Now.Year - comparisonDate.Year - 1; } De riktige scenarioene skulle jo blitt dette: new DateTime(1958, 06, 01) age = 49 og new DateTime(1958, 01, 01) age = 50 Klarer dere se hva som er gæli? Lenke til kommentar
Manfred Skrevet 4. april 2008 Del Skrevet 4. april 2008 Nei? Fordi du definerer jo comparisonDate som mindre enn DateTime.Now, så den vi ljo alltid gå inn i den første if'en... En annen ting er vel det at det er greit å bruke DateTime.CompareTo() eller hva den heter, i stedet for < Lenke til kommentar
Degeim Skrevet 4. april 2008 Del Skrevet 4. april 2008 (endret) Hva med: private int findAge(DateTime birthDate) { TimeSpan age = DateTime.Now.Subtract(birthDate); return (int)(age.TotalDays/365.25); } EDIT: Manfred klarte å tr[y/o]lle seg inn før meg, men her har du i alle fall et løsningsforslag Endret 4. april 2008 av Degeim Lenke til kommentar
Manfred Skrevet 4. april 2008 Del Skrevet 4. april 2008 (endret) Skal du være HELT korrekt, så er det /365.23...ettellerannet... btw: jeg vil komme til å være foran deg ^^ Endret 4. april 2008 av Manfred Lenke til kommentar
plxz0r Skrevet 4. april 2008 Forfatter Del Skrevet 4. april 2008 Nei? Fordi du definerer jo comparisonDate som mindre enn DateTime.Now, så den vi ljo alltid gå inn i den første if'en... Selv om det står i det første eksempelet, så har jeg ikke statiske verdier i comparisonDate. Men uansett: Ny kode: DateTime comparisonDate = new DateTime(intYear, intMonth, intDay); DateTime comparisonDateNow = DateTime.Now; int age = 0; if (comparisonDate.Date.CompareTo(DateTime.Now.Date) < 0) { age = DateTime.Now.Year - comparisonDate.Year; } else { age = DateTime.Now.Year - comparisonDate.Year - 1; } Hvis jeg setter datovariablene til å være f.eks 20.01.2008, så skulle jo age blitt 50, for da har man hatt bursdagen for i år. Og skulle datovariablene være satt til f.eks 20.10.2008, så skulle age vært 49, pga bursdagen har ikke vært enda. Problemet er at den alltid gir 50 uansett. Helt sikker en veldig åpenbar feil, men jeg ser det bare ikke. Lenke til kommentar
Degeim Skrevet 4. april 2008 Del Skrevet 4. april 2008 Så du ikke min kode? Den returnerer alltid riktig, og utnytter .Net-rammeverket bra. Lenke til kommentar
plxz0r Skrevet 4. april 2008 Forfatter Del Skrevet 4. april 2008 Joda, skal teste din og. Men nå har jeg blitt så opphengt i hvorfor min kode ikke funger.. Lenke til kommentar
GeirGrusom Skrevet 4. april 2008 Del Skrevet 4. april 2008 comparisonDateTimeNow er ikke i bruk btw Kanskje du også skal bytte ut DateTime.Now med DateTime.Today, siden klokkeslett er irrelevant allikevel. Lenke til kommentar
plxz0r Skrevet 4. april 2008 Forfatter Del Skrevet 4. april 2008 (endret) Jeg fant ut av det nå. Var det jeg var redd for, en skikkelig åpenbar feil egentlig. Endret 4. april 2008 av plxz0r Lenke til kommentar
Andeplane Skrevet 5. april 2008 Del Skrevet 5. april 2008 Finnes jo en datediff-metode som er tilgjengelig i .Net. Datediff(dateinterval.year,dato1,dato2) eller noe sånt. Du har vel løst det Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå