Gå til innhold

Problem med datosammenligning


Anbefalte innlegg

Skrevet

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?

Videoannonse
Annonse
Skrevet

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 <

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

Endret av Degeim
Skrevet (endret)

Skal du være HELT korrekt, så er det /365.23...ettellerannet... :p

 

btw: jeg vil komme til å være foran deg ^^

Endret av Manfred
Skrevet
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.

Skrevet (endret)

Jeg fant ut av det nå.

Var det jeg var redd for, en skikkelig åpenbar feil egentlig. :)

Endret av plxz0r

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å
×
×
  • Opprett ny...