Godaften allesammen
Vil starte med at fortælle at jeg skal bruge min egen alder helt præcist i år, måneder og dage.
Jeg googlede det, og troede jeg havde fundet svaret - da den igår (ganske rigtigt) mente jeg var 26 år, 1 måned, og 25 dage.
Idag beregner algoritmen så blot at jeg er 27 dage (pludselig en dag for meget).
Derfor gik jeg så selv igang med at prøve mig frem.
Jeg har lavet et lille loop for at kunne holde fast i logikken så jeg forstår det.
DATA: fødselsdato : 1985/05/05
At beregne min præcise alder i år er nemt:
Dette gøres ved at se på om jeg har holdt fødselsdag i år, hvilket beregnes således:
Dags måned og dag : 0701
fødsels måned og dag : 0505
Hvis dags måned og dag (tallet) er større end det for fødselsåret, så har jeg haft fødselsdag i år.
Således ved jeg om jeg skal medregne det nuværende år, som et år vi er i.
- bool hadBirthdayThisYear = false;
-
- string birthCompleteString = birthdate.ToString("MMdd"); //0505
- string todayCompleteString = DateTime.Now.ToString("MMdd"); //0701
-
- int birthInt = int.Parse(birthCompleteString);
- int todayInt = int.Parse(todayCompleteString);
-
- //If the month and date of today is bigger than the date and month i was born you should count in the current year.
- int endYear = DateTime.Now.Year - 1;
- if (todayInt > birthInt)
- {
- endYear++;
- hadBirthdayThisYear = true;
- }
-
- DateTime dateTry = birthdate;
- while (dateTry.Date <= DateTime.Now.Date)
- {
- if (dateTry.Year < endYear)
- {
- years++;
- dateTry = dateTry.AddMonths(12);
- continue;
- }
- }
Dette giver ganske rigtigt 26 år.
Nu kommer problemet så til at beregne mine måneder og dage.
Havde i tankerne at se på om dags dato (01) er større end dato'en på min fødselsdag (05), så jeg ved om jeg skal beregne den nuværende måned med.
Har ikke testet det, men havde følgende i tankerne:
- bool includeCurrentMonth = false;
-
- string birthDateString = birthdate.ToString("dd");
- string todayDateString = DateTime.Now.ToString("dd");
- int birtDateInt = int.Parse(birthDateString);
- int todayDateInt = int.Parse(todayDateString);
-
- if (todayDateInt >= birtDateInt)
- {
- includeCurrentMonth = true;
- }
-
- int endMonth = DateTime.Now.Month - 1;
- if (includeCurrentMonth)
- endMonth++;
og nede i mit loop lave følgende:
- if (dateTry.Month < endMonth)
- {
- months++;
- dateTry = dateTry.AddMonths(1);
- continue;
- }
Nu kommer den svære så!
For denne del vil stoppe 05-06-2011:
05 fordi det er min fødselsdato
06 fordi vi ikke er nået til den 05 i denne måned endnu
Og jeg skal så vide jeg skal tælle dagene op til den nye dato.
Men kan ikke helt gennemskue hvordan den sidste del med datoen skal laves for den i fremtiden vil beregne korrekt.
Så er der nogen der kan hjælpe med den del og er der nogen der eventuelt kan lave en form for test for at se om den virker korrekt og vil virke korrekt? (tænker fx på skudår, fødselsdato på specielt svære datoer etc?)
Håber i kan hjælpe mig