Mit der Uhrzeit programmieren in C#?
Guten Abend, ich möchte ein kleines Projekt in C# schreiben, das Programm soll mich auf verschiedenen Uhrzeiten verschieden grüßen zb soll mir das programm ab 12 Uhr sagen "Guten Tag" und ab 18 Uhr "Guten Aben"
Ich habe versucht eine Int mit dem Wert der System Uhrzeit zu speichern hat aber alles nicht nach plan geklappt, dass alles habe ich in einer if frage gemacht wahr aber trozdem falsch.
bitte um Hilfe. Danke im voraus :)
ich Hoffe man erkennst das bild, fals nicht dann gerne melden
4 Antworten
time ist in dem Fall ein komplettes Datum mit Uhrzeit. Das kannst du nicht einfach nur einer Zahl vergleichen. Ich schreibe gerade am Handy, deshalb kann ich nicht testen, aber wenn du hinter time einen Punkt schreibst, müsste dir Visual Studio alle Eigenschaften und Methoden anzeigen, die du bei einem DateTime Objekt benutzen kannst. Die aktuelle Stunde heißt da Hour oder HourOfDay. Damit kannst du dann prüfen, ob sie größer oder kleiner als 20 ist.
das DateTime -objekt bringt alles mit um direkte Vergleiche (ohne irgendwelchen großartigen Zauber zu veranstalten)
Die Methode DateTime.Compare() ist genau das was Du benötigst:
using System;
class Prog{
public static void Main(string[] args){
string tageszeit="grummel";
DateTime jetzt = DateTime.Now;
Console.WriteLine(jetzt);
Console.WriteLine(DateTime.Compare(jetzt, Convert.ToDateTime("12:00"))); //immer -1,0 oder 1
if (DateTime.Compare(jetzt, Convert.ToDateTime("04:00")) >= 0) tageszeit = "Morgen";
if (DateTime.Compare(jetzt, Convert.ToDateTime("12:00")) >= 0) tageszeit = "Tag";
if (DateTime.Compare(jetzt, Convert.ToDateTime("18:00")) >= 0) tageszeit = "Abend";
Console.WriteLine("Guten {0}",tageszeit);
Console.ReadKey();
}
}
mir persönlich gefällt es jedoch besser mit Timespan zu arbeiten:
using System;
class Prog{
public static void Main(string[] args){
string tageszeit="grummel";
DateTime jetzt = DateTime.Now;
DateTime mitternacht = Convert.ToDateTime("0:00");
TimeSpan seitMitternacht = jetzt - mitternacht;
Console.WriteLine("Zeitspanne seit Mitternacht: {0});",seitMitternacht) ;
if (seitMitternacht >= TimeSpan.Parse("04:00")) tageszeit="Morgen";
if (seitMitternacht >= TimeSpan.Parse("12:00")) tageszeit="Tag";
if (seitMitternacht >= TimeSpan.Parse("18:00")) tageszeit="Abend";
Console.WriteLine("Guten {0}",tageszeit);
Console.ReadKey();
}
}
die Tageszeiten beziehen sich in dem Fall auf die seit Mittrnacht abgelaufene Zeit eine Zeitspanne ergibt sich durch simple Subtrakion zweier DateTimes.
der Vorteil dieses Vorgehens, man hat auch immer Zugriff auf eine reale Zahl mit der sich auch viele andere operationen bewerkstelligen lassen (via TimSpan .Total...) (TotalHours ..TotalNanoseconds)
Guten Abend,
du solltest das mit DateTime.Hour und mit einem if oder switch machen.
Zum Beispiel:
// Aktuelle Uhrzeit abrufen
DateTime jetzt = DateTime.Now;
int stunde = jetzt.Hour;
string gruss;
if (stunde >= 12 && stunde < 18)
{
gruss = "Guten Tag";
}
else if (stunde >= 18)
{
gruss = "Guten Abend";
}
else
{
gruss = "Guten Morgen";
}
Console.WriteLine(gruss);
}
}
Vielen dank dir, jetzt kann ich mein programm endlich weiter schreiben :)
Das DateTime-struct bildet die Informationen eines kompletten Zeitstempels ab, ist also mehr als nur eine Zahl.
Um die aktuelle Stunde zu erhalten, kannst du das Hour-Property abrufen.
if (time.Hour > 20)
{
// ...
}
Du brauchst die else-konstrukte nich wirklich...
Einfach Stumpf eine Kette von Optionen von abarbeiten, da wiederholte setzen der gleichen Variable in diesem einfachen Fall kein zeitrelevantes Problem darstellt. der Letzte passende wert bleibt ...