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 user profile iconjaenicke 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;
// 20:05:03 ist nur ein Beispiel, ich kenne die Uhrzeiten der Sternbilder nicht
DateTime startTime = new DateTime(birthDate.Year, 3212053); 
DateTime endTime = new DateTime(birthDate.Year, 4202053);

if (startTime <= birthDate && birthDate < endTime) {
  // widder
}

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

user profile iconinteressierter hat folgendes geschrieben Zum zitierten Posting springen:
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.