Rotti Geschrieben 14. September 2010 Teilen Geschrieben 14. September 2010 Hey! Ich habe ein Programm in dem ich auch mit Datum arbeite! Gibts ne einfache Möglichkeit um zu überprüfung ob das Datum real ist? So Quasi: 11.10.2010 => true 32.10.2010 => false gleiches gilt auch für den Februar in Schaltjahren! Wär super wenn mir jemand sagen kann ob das einfach geht, so schwer kann das doch eigentlich nicht sein, aber ich habe gerade das klassische brett vorm kopf!:upps Danke schonmal! Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
lbm1305 Geschrieben 14. September 2010 Teilen Geschrieben 14. September 2010 Moin, vielleicht helfen Dir die Methoden TryParse und IsLeapYear von DateTime weiter. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
2K1.INC Geschrieben 15. September 2010 Teilen Geschrieben 15. September 2010 Hi, benutz doch einfach die DateTimeKlasse. DateTime Tag = new DateTime(2010, 10, 32); Sollte es kein gültiges Datum sein wie in dem beispiel hier wirft er automatisch eine ArgumentOutOfRangeException, schreib dir einfach eine Methode zum prüfen. So könnte die Methode aussehn: private bool isDateLegal(int Year, int Month, int Day) { try { DateTime datum = new DateTime(Year, Month, Day); return true; } catch (ArgumentOutOfRangeException ex) { return false; }catch (Exception e){} } hier der Aufruf der Methode als Beispiel if (isDateLegal(2010, 10, 32)) { // Gültiges Datum das hier weiter verarbeitet werden soll } else { // Unglütiges Datum User informiern } Das wär die einfachste Lösung. Edit: Nie vergessen Exception selber abzufangen im catch Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Rotti Geschrieben 15. September 2010 Autor Teilen Geschrieben 15. September 2010 Erstmal besten Dank, ich denke das hilft mir weiter! Ich werd probieren und melde mich dann zurück Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Rotti Geschrieben 15. September 2010 Autor Teilen Geschrieben 15. September 2010 sorry für DP: @2K1.INC Ja klar mit DateTime arbeite ich ohnehin, ich habs jetzt auch so bzw. so ähnlich gemacht und nun läufts Vielen Dank für die Hilfe! Damit kann der Thread auch geclosed werden Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
lbm1305 Geschrieben 15. September 2010 Teilen Geschrieben 15. September 2010 @2K1.INC Ja klar mit DateTime arbeite ich ohnehin, ich habs jetzt auch so bzw. so ähnlich gemacht und nun läufts Wie sieht Deine Lösung aus? Wie oben beschrieben? Persönlich finde ich die Variante von 2K1.INC nicht sooo doll. Warum? Weil erst noch die Exception behandelt werden muss, was wiederum Resourcen kostet. Man sollte möglichst auf Exceptions verzichten bzw. nur da einsetzen, wenn es nicht anders geht. Was spricht den gegen? PseudoCode: DateTime dateValue; bool result = DateTime.TryParse("32.10.2010", out dateValue); Der wert von dateValue ist entweder das richtige Datum oder wenn TryParse fehlschlägt das MinDate (01.01.0001 --> oder so). Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Rotti Geschrieben 15. September 2010 Autor Teilen Geschrieben 15. September 2010 Ich habs jetzt ganz anders gelöst! Ich hab mir ne Liste angelegt: List<short> Monatstage= new List<short>(); und die dann mit werten gefüllt: Monatstage.Add(31); Monatstage.Add(28); Monatstage.Add(31); Monatstage.Add(30); usw. anschließend hab ich noch eine abfrage drin: if (DateTime.IsLeapYear(Jahr)) Monatstage[1] = 29; else Monatstage[1] = 28; Und dann Rechne ich die Werte für Sekunden, Minuten, Stunden, Tage, Monate & Jahre hoch! War aufgrund der Datei die ich auslese leider für nicht leichter machbar Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
2K1.INC Geschrieben 15. September 2010 Teilen Geschrieben 15. September 2010 Wie sieht Deine Lösung aus? Wie oben beschrieben? Persönlich finde ich die Variante von 2K1.INC nicht sooo doll. Warum? Weil erst noch die Exception behandelt werden muss, was wiederum Resourcen kostet. Man sollte möglichst auf Exceptions verzichten bzw. nur da einsetzen, wenn es nicht anders geht. Was spricht den gegen? PseudoCode: DateTime dateValue; bool result = DateTime.TryParse("32.10.2010", out dateValue); Der wert von dateValue ist entweder das richtige Datum oder wenn TryParse fehlschlägt das MinDate (01.01.0001 --> oder so). TryParse löst auch Exceptions aus... man bekommt zwar keine weil die Methode/Klasse die Exceptions selber behandelt... Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
NerdonRails Geschrieben 16. September 2010 Teilen Geschrieben 16. September 2010 Ich verstehe das Problem nicht. DateTime wirft bei invaliden Daten doch ArgumentOutOfRangeExceptions. [TestMethod] [ExpectedException(typeof(ArgumentOutOfRangeException))] public void TestThatLeapYearsAreAutomaticallyChecked() { DateTime dt = new DateTime(2010, 2, 29); } [TestMethod] [ExpectedException(typeof(ArgumentOutOfRangeException))] public void TestThatInvalidDatesThrowAnException() { DateTime dt = new DateTime(2010, 12, 32); } Da sollte ein einfaches Try-Catch beim erstellen eines neuen DateTime.Objektes doch eigentlich reichen, oder irre ich da ? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
2K1.INC Geschrieben 16. September 2010 Teilen Geschrieben 16. September 2010 ne föllig richtig das steht schon da dritter Beitrag, es ging noch darum das einem meine Lösung nicht gefallen hat weil ich Exceptions abfange weil das Speicher frisst darum meinte er man solle TryParse usen was aber intern selber Exception wirt man aber keine bekommt weil die Klasse das selber behandelt... Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
NerdonRails Geschrieben 16. September 2010 Teilen Geschrieben 16. September 2010 ne föllig richtig das steht schon da dritter Beitrag, es ging noch darum das einem meine Lösung nicht gefallen hat weil ich Exceptions abfange weil das Speicher frisst darum meinte er man solle TryParse usen was aber intern selber Exception wirt man aber keine bekommt weil die Klasse das selber behandelt... Ups, überlesen, verdammter Schlafmangel. Die Exceptions-Lösung ist aber im gegensatz zu irgendwelchen selbstverwalteten Listen und komischen selbstgefrickelten Validierungen die eleganteste und sicherste Lösung und ist sicher in Sachen Speicher (wovon man im Zeitalter von 1 GB+ RAM mehr als genug haben sollte) die effizienteste Lösung. Zusätzlich dupliziert man einfach keinen Code der so schon in der Sprache vorhanden ist. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
lbm1305 Geschrieben 16. September 2010 Teilen Geschrieben 16. September 2010 weil das Speicher frisst Wo steht das? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
2K1.INC Geschrieben 16. September 2010 Teilen Geschrieben 16. September 2010 Wie sieht Deine Lösung aus? Warum? Weil erst noch die Exception behandelt werden muss, was wiederum Resourcen kostet. hier... darum gehts nun aber auch nicht mehr, er hat sein problem gelöst somit ist alles andere hier sinnlos Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Rotti Geschrieben 16. September 2010 Autor Teilen Geschrieben 16. September 2010 SIE hat ihr Problem gelöst! Jungs es gibt auch weibliche Programmierer Trotzdem noch mal besten Dank!:uli Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
2K1.INC Geschrieben 16. September 2010 Teilen Geschrieben 16. September 2010 SIE hat ihr Problem gelöst! Jungs es gibt auch weibliche Programmierer Trotzdem noch mal besten Dank!:uli Rotti klingt so hmm männlich ;D Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.