Programmieren in C# Uhrzeit berechnen?
! Wir fahren um 10 Uhr los!!!
class Program
{
static double distance = 0;
static int speed = 0;
static double time = 0;
static void Main(string[] args)
{
Console.WriteLine("Berechung der Ankunftszeit bei der Tante");
Console.Write("Entfernung in Km: ");
distance = Convert.ToDouble(Console.ReadLine());
Console.Write("Geschwindigkeit in km/h: ");
speed = Convert.ToInt32(Console.ReadLine());
distance = Math.Round(distance,2);
time = distance / speed;
time = Math.Round(time, 2);
Console.WriteLine($"Für die Strecke von {Math.Round(distance,2)} km benötigen Sie " +
$"{time} Stunden. ");
Console.WriteLine($"Sie kommen um {hour}:{minute}:{second} an");
Hey Leute, wie kann hier die Uhrzeit berechnen, also die Stunden: Minuten: Sekunden?
Danke im voraus!
3 Antworten
TimeOnly time = new TimeOnly(10, 0);
time = time.AddHours(h);
Wer Suchmaschinen benutzen kann ist klar im Vorteil.
Und wer behauptet, nichts gefunden zu haben, kann scheinbar nicht lesen.
Zunächst berechnest du die Anfunktszeit als Summe von Abfahrtszeit und Fahrtdauer:
static float ankunft;
ankunft = abfahrtszeit + time;
Du hast dann die Ankunftszeit in Dezimalschreibweise. Um daraus Stunden, Minuten und Sekunden zu machen, sind folgende Rechenschritte erforderlich:
- ganze Stunden bestimmen - das geschieht durch Abtrennen des nicht ganzzahligen Rests, wofür die die Funktion Math.Truncate() verwenden kannst.
- Erhaltenen Rest mit 60 multiplizieren. Das Ergebnis sind die verbleibenden Minuten der Fahrzeit in dezimaler Form.
- die ganzen Minuten bestimmen - das geschieht wieder durch abtrennen des nicht ganzzahligen Rests.
- Den erhaltenen Rest mit 60 multiplizieren. Das Ergebnis sind die restlichen Sekunden der Fahrzeit in dezimaler Form.
- Die Sekunden runden.
Der Code könnte etwas so aussehen:
long int stunden, minuten, sekunden;
long double ganzerTeil, rest;
/* vorbereitende Rechnungen hier: */
ganzerTeil = Math.Truncate(ankunft); /* ganze Stunden */
stunden = Convert.ToInt32(ganzerTeil);
rest = (ankunft- ganzerTeil)* 60; /* Restzeit in Minuten */
ganzerTeil = Math.Truncate(rest); /* ganz Minuten */
minuten = Convert.ToInt32(ganzerTeil);
rest = (rest - ganzerTeil)*60; /* Restzeit in Sekunden */
sekunden = Convert.ToInt32(Math.Round(rest))
Vielleicht möchtest du ds mal ausprobieren
Oder einfach existierende Funktionen von .NET nutzen:
DateTime, DateTimeOffset, oder TimeOnly
Du musst genauso wie du das im Mathematik Unterricht gelernt hast die Stunden mit Kommazahl in Stunden, Minuten und Sekunden umrechnen.
Tipp: 60 Min = 1h