2010-12-22 11 views
2

Ich verwende datetimepicker, der das Datum anzeigt (das aus der Datenbank abgerufen wird). Ich habe meine Anwendung auf einigen Computern ausgeführt, und ich habe festgestellt, dass unter Windows XP SP2 das maximale Datum, das abgerufen und angezeigt werden kann, 2020 ist, aber für spätere Versionen des Betriebssystems kann das maximale Datum höher sein, z. 2999. Kennt jemand dieses Problem?C# DateTimePicker Max. Datumsbereich

Vielen Dank für Ihre Hilfe. Jing Jing

Antwort

2

Sie können die Eigenschaft DateTime.MaxValue verwenden, um abhängig vom System das größtmögliche Datum abzurufen. Wenn beim Lesen von Daten aufgrund eines Überlaufs Probleme auftreten, können Sie mit den DateTime.TryParse() -Methoden versuchen, den Wert zu lesen, ohne eine Ausnahme auszulösen.

UPDATE: Martinho ist richtig. Von MSDN:

Einige Kalendern, wie das UmAlQuraCalendar, einen oberen Datumsbereich unterstützen, die früher als MaxValue ist. In diesen Fällen versucht der Zugriff auf MaxValue in Variable Zuweisungen oder Formatierung und Analyse Operationen können eine ArgumentOutOfRangeException auslösen. Vielmehr als den Wert von DateTime.MaxValue abrufen, können Sie den Wert der angegebenen Kultur letztgültigen Datumswertes aus der System.Globalization.CultureInfo.DateTimeFormat.Calendar.MaxSupportedDateTime Eigenschaft abrufen.

Verwenden Sie daher das Feld System.Globalization.CultureInfo.DateTimeFormat.Calendar.MaxSupportedDateTime, um den vom System unterstützten maximalen Datumswert zu ermitteln.

+1

Sorry, aber nein, DateTime.MaxValue hängt nicht vom System ab. DateTime.MaxValue ist 23: 59: 59.9999999, 31. Dezember 9999, aka, 1 Nanosekunde vor 00:00:00 Uhr, 1. Januar, 10000, aka, 3155378975999999999 Ticks. –

+0

Wenn Sie die DateTime in der Datenbank speichern, vergewissern Sie sich außerdem, dass Ihre Datumsbereiche kompatibel sind. Die DateTime von SQL Server hat beispielsweise einen Bereich vom 1. Januar 1753 bis zum 31. Dezember 9999, der nicht mit dem Typ C# 'DateTime' identisch ist. – Jacob

+1

Zu Jacobs Kommentar hinzufügen: Obwohl die Obergrenze für DateTime-Typen von SQL Server und C# gleich ist, ist die untere Grenze für C# 's DateTime 00:00:00, 1. Januar, 1 und Sie können also Werte haben, die Sie nicht speichern können in SQL Server-Datenbanken. Ich bezweifle jedoch, dass viele jemals auf das Problem stoßen werden, Daten vor 1753 nicht speichern zu können. –