C# :: Aufgabe #50 :: Lösung #1

8 Lösungen Lösungen öffentlich
#50

Zeit zwischen zweier Tage

Anfänger - C# von Dome - 10.03.2013 um 23:50 Uhr
Erstellen Sie ein Programm, mit dem man die Zeitdifferenz zwischen zwei Tagen bestimmen kann. Hierzu muss man beide Tage eingeben und das Programm gibt die Zeitdifferenz aus.

Je nach Schwierigkeitsgrad:
Eingabe der Daten per Konsole oder GUI, eine Art Dropdown-Menü oder ähnliches
Ausgabe der Differenz in mehreren "Zeitformen", Tage, Monate, Jahre, Minuten, Stunden
Eingabe von Uhrzeiten, die jeweils in die Berechnung einfließen
#1
vote_ok
von haeusner (60 Punkte) - 25.09.2013 um 11:06 Uhr
Quellcode ausblenden C#-Code
            

            Console.Write("Bitte geben Sie den ersten Tag an: ");
            var firstDay = Console.ReadLine();

            Console.Write("Bitte geben Sie den zweiten Tag an: ");
            var secondDay = Console.ReadLine();

            Console.Write("Bitte geben Sie die Zeitdifferenz an, die ermittelt werden soll (1 = Tage, 2 = Monate, 3 = Jahre, 4 = Minuten, 5 = Stunden: ");
            var timeChoice = Console.ReadLine();

            var begin = DateTime.Parse(firstDay); // Hier wird bei falschem Format eine Exception geworfen
            var end = DateTime.Parse(secondDay); // Hier wird bei falschem Format eine Exception geworfen

            TimeSpan t;
            
            if (begin <= end)
                t = end - begin;
            else
                t = begin - end;

            switch (timeChoice)
            {
                case "1":
                    Console.WriteLine("Zwischen dem {0} und dem {1} sind {2} Tage.",
                                       firstDay,
                                       secondDay,
                                       t.TotalDays);
                    break;

                case "2":
                    {
                        int months = 0;
                        DateTime t1, t2;
                        if (begin < end)
                        {
                            t1 = begin;
                            t2 = end;
                        }
                        else
                        {
                            t2 = begin;
                            t1 = end;
                        }
                            
                        while ((t1.Month < t2.Month && t1.Year == t2.Year)
                             || t1.Year < t2.Year)
                        {
                            months++;

                            t1 = t1.AddMonths(1);
                        }
                        Console.WriteLine("Zwischen dem {0} und dem {1} sind {2}  Monate.",
                                           firstDay,
                                           secondDay,
                                           months);
                        break;
                    }
                case "3":
                    {
                        int years = 0;
                        DateTime t1, t2;
                        if (begin < end)
                        {
                            t1 = begin;
                            t2 = end;
                        }
                        else
                        {
                            t2 = begin;
                            t1 = end;
                        }

                        while (t1.Year < t2.Year)
                        {
                            years++;

                            t1 = t1.AddYears(1);
                        }

                        Console.WriteLine("Zwischen dem {0} und dem {1} sind {2} Jahre.",
                                           firstDay,
                                           secondDay,
                                           years);
                        break;
                    }
                case "4":
                    Console.WriteLine("Zwischen dem {0} und dem {1} sind {2} Minuten.",
                                       firstDay,
                                       secondDay,
                                       t.TotalMinutes);
                    break;

                case "5":
                    Console.WriteLine("Zwischen dem {0} und dem {1} sind {2} Stunden.",
                                       firstDay,
                                       secondDay,
                                       t.TotalHours);
                    break;

                default:

                    throw new ArgumentOutOfRangeException();
            }

            Console.ReadKey();

Kommentare:

Für diese Lösung gibt es noch keinen Kommentar

Bitte melden Sie sich an um eine Kommentar zu schreiben.
Kommentar schreiben