Gå til innhold

Problem med datosammenligning


Anbefalte innlegg

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
Videoannonse
Annonse

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 :p

Endret av Degeim
Lenke til kommentar
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

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 konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...