Entwickler-Ecke
Sonstiges (.NET) - Datum vergleichen
interessierter - Fr 20.04.12 23:41
Titel: Datum vergleichen
Hallo Zusammen
habe im Internet nach der Antwort gesucht, aber leider nicht gefunden. Es geht um Datumsvergleich.
Mein jetziger Code liest den String Datum ein und konvertiert ihn zu einem Datum.
Nun will ich die Einagbe mit mehreren Zeitspannen vergleichen. z.B.
Wenn Eingabe Datum zwischen dem 1.4 und dem 28.4 liegt, dann Console.WriteLine...
usw
Ziel ist es das richtige Sternzeichen zu erkennen und auszugeben via WriteLine
WIe kann ich Zeitspannen definieren und mit dem Datum der Eingabe vergleichen?
Grüsse
interessierter
jaenicke - Sa 21.04.12 06:02
Das kannst du eigentlich direkt abfragen. Du musst nur aus deinen Sternzeichendaten auch DateTime-Werte machen und dabei beim Steinbock auf den Jahreswechsel achten.
C#-Quelltext
1: 2:
| if ((ZodiacSignStart <= DateTime.Now) and (DateTime.Now <= ZodiacSignEnd)) |
interessierter - So 22.04.12 15:04
supi, hat geklappt, danke ;)
komme richtig gut voran in letzter Zeit.
Jedoch habe ich nun das Problem bei den Sternzeichen die sich im Geburtstag überschneiden.
z.B. 22.9. - 23.10. Waage und vom 23.10.- 22.11 Skorpion. 23.10. überschneidet sich.
Ich denke mal, ich sollte bei der Abfrage noch nach der Geburtszeit fragen, und meinen ifs mit Datum noch Uhrzeiten einfügen.
Hier ein BeispielCode:
C#-Quelltext
1: 2: 3: 4:
| if (x.Month == 3 & x.Day >= 21 || x.Month == 4 & x.Day <= 20) { Console.WriteLine"Du bis Widder"); } |
Kann ich da theoretisch noch Stunden und Minuten einbauen?
Grüsse interessierter
Yogu - So 22.04.12 15:38
Hallo,
wenn du den Code von
jaenicke verwendest, wird auch die Uhrzeit in den Vergleich eingeschlossen (der Typ heißt ja
DateTime). In deinem Code vergleichst du jedoch Monat und Tag separat, das ist nicht zu empfehlen. Mein Vorschlag:
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8:
| DateTime birthDate = DateTime.Now; DateTime startTime = new DateTime(birthDate.Year, 3, 21, 20, 5, 3); DateTime endTime = new DateTime(birthDate.Year, 4, 20, 20, 5, 3);
if (startTime <= birthDate && birthDate < endTime) { } |
Am besten legst du die Start- und Endzeiten in einer Liste ab, und gehst dann in einer Schleife alle Einträge durch. Beachte, dass der Steinbock zweimal vorkommen muss, einmal für das Jahresende, und einmal für den Jahresbeginn.
Grüße,
Yogu
jaenicke - So 22.04.12 15:54
interessierter hat folgendes geschrieben : |
Jedoch habe ich nun das Problem bei den Sternzeichen die sich im Geburtstag überschneiden.
z.B. 22.9. - 23.10. Waage und vom 23.10.- 22.11 Skorpion. 23.10. überschneidet sich. |
Eigentlich überschneiden sich keine. Ich weiß nicht wo du die Daten her hast, aber meines Wissens nach fängt Skorpion erst am 24.10. an.
interessierter - So 22.04.12 16:10
Ich benutzte folgende Liste
http://www.cortesi.ch/Glossar/gl_sternzeichen.htm
und die ist wirklich falsch. Andere Listen überschneiden sich nicht im Datum.
Ach Gott, wieso musste ich von den x Listen ausgerechnet diese nehmen :D
Nun kann ich mein Projekt ja trotzdem auf den Vergleich von Monat und Tag belassen. Würde ich die Geburtszeit noch einfügen, müsste ich ja von z.B. Jahrgang 1930 alle Daten und Zeiten in meinen Code integrieren damit jeder eine Abfrage machen könnte. Durch die Stundenverschiebungen könnten ja sonst fehlerhafte Ausgaben gemacht werden.
Aber hab trotzdem gelernt wie man start und endzeit benutzen kann. Coole Sache, danke Leute.
Grüsss
interessierter
Ralf Jansen - So 22.04.12 16:29
Eher ungenau als falsch. Wobei es darauf an kommt wie genau du es willst. Die Sternzeichen überschneiden sich nicht aber wann genau sie wechseln(Datum und Uhrzeit) ist eben jedes Jahr ein wenig anders. Wobei ich keine Ahnung habe wie das berechnet wird, wenn es denn berechnet wird und nicht irgendwie ausgewürfelt. Immerhin reden wir von Astrologie und nicht von einer Wissenschaft.
interessierter - So 22.04.12 16:43
Ich muss jetzt leider noch ein paar Tage warten bis ich einen neuen Work Shop kriege :(
Hat irgendjemand ne Aufgabe für mich die mittels sitch case lösen soll?
Mir fällt da irgendwie grad nichts ein. Will switch case noch unter die Lupe nehmen.
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!