Konwertowanie

0

Czy można zrobić kod który dokładnie obliczy ile użytkownik ma lat wprowadzając dane jego urodzenia w konsoli?
Sęk w tym że to już zrobiłem tylko rzecz w tym że załóżmy urodziłem się 1999.01.01 a jest 2018.12.31 jeśli system będzie tylko miał datę obliczy że mam już 18 lat i jestem pełnoletni a nie jestem bo brakuje mi jednego dnia, to kod niestety tylko ma wprowadzoną date i jej nie aktualizuje:

początek:
               Console.Clear();

            Console.WriteLine("Podaj swój rok urodzenia\n");
            
            int Rok = 0;

            //new DateTimeOffset(DateTime.Now).ToUnixTimeMilliseconds();
            int number = 2019;

            var RokString = Console.ReadLine();

            Rok = int.Parse(RokString);

            int Wynik =  number - Rok;

            if (Wynik > 17)
            {
                Console.Clear();
                Console.WriteLine("Jesteś Pełnoletni ,masz " + Wynik + " lat");


            }
            if (Wynik < 19)
            {

                Console.Clear();
                Console.WriteLine("Nie Jesteś Pełnoletni ,masz " + Wynik + " lat");

            }

            Console.WriteLine("Chcesz sprawdzić jeszcze raz czy jesteś pełnoletni ?");
            Console.WriteLine("\nT/N");
            var T_N = Console.ReadLine();
            if (T_N == "T")
            {

                goto początek;

            }
            if (T_N == "N")
            {

                return;

            }

jeśli ktoś ma pomysł na rozwiązanie tej zagadki z aktualizacją danych niech pisze :) :) :)
PS. Jak by to było możliwe w DateTime to bardzo dziękuję, jeśli nie to każde możliwe rozwiązanie :)

0

Jak to nie jest pełnoletni?

0

To był mój mylny niestety przykład ale np. urodziłem się 2000.01.01 a jest 2017.12.31 jeśli system będzie tylko miał datę obliczy że mam już 18 lat

0

:)

1
...
var startDate = new DateTime(2000, 1, 1);
var endDate = new DateTime(2017, 12, 31);
var result = CalculateYears(startDate,endDate);
...

 public int CalculateYears(DateTime start, DateTime end)
 {
      return (end.Year - start.Year - 1) +
                (((end.Month > start.Month) ||
                ((end.Month == start.Month) && (end.Day >= start.Day))) ? 1 : 0);
}
1
	DateTime zeroTime = new DateTime(1, 1, 1);
	DateTime date1 = new DateTime(1996, 11, 12, 22, 15, 0);
	DateTime date2 = DateTime.Now;
    TimeSpan diff1 = date2.Subtract(date1);
	var aleOsiemnastka = (zeroTime + diff1).Year - 1;
	Console.WriteLine(aleOsiemnastka > 17 ? "TAK" : "NIE");
0

Z tego co wiem to data z liczbami binare czy da się więc wprowadzić date urodzenie użytkownika z klawiatury? :)
Jeśli się da proszę o odpowiedź :)

1

Nie wiem o co Ci chodzi, ale nie mam co robic w pracy więc i podobno wy młodzi 'programiści' nie ogarnanice nawet google:

public String promtUser(String prompt)
{
    Console.WriteLine(prompt + ": ");
    return Console.ReadLine()
}

var zmiennacoś= promtUser("Podaj coś");

A w DateTime możesz zainicjalizować dodatkowo godziną jakie liczby binarne.
Prosze.

0

Uważam temat za zakończony
dziękuje za wszystkie pomocne odpowiedzi
problem został rozwiązany

Serdecznie wszystkim dziękuję :)

1 użytkowników online, w tym zalogowanych: 0, gości: 1