Die UTC-Zeit dargestellt, wenn der offset angewendet wird, muss zwischen Jahr 0 und 10.000. Parameter name: offset
Ich habe den folgenden code in eine ASP.NET MVC3-Controller:
public PartialViewResult GetCalendar(int? month, int? year)
{
var test = new DateTime((year.HasValue ? year.Value : 1), (month.HasValue ? month.Value : 1), 1);
return PartialView("Calendar", new DateTimeOffset(test));
}
Meiner Ansicht Modell ist DateTimeOffset?
Was ist der Grund für die Ausnahme, die ausgelöst?
InformationsquelleAutor der Frage Babu James | 2012-12-10
Du musst angemeldet sein, um einen Kommentar abzugeben.
Den
DateTimeOffset
Konstruktor wird zunächst konvertiertDateTime
ist, die nichtKind
'UTC' , die äquivalente UTC-Zeit. Es wird dann überprüfen, ob die UTC-äquivalentDateTime
fällt außerhalb der Grenzen derDateTimeOffset.MinValue
undDateTimeOffset.MaxValue
und wenn es das tut, wirft einenArgumentOutOfRangeException
wie Sie Sie erleben.Überprüfen Sie die
DateTime.Kind
von der variabletest
die Sie verwenden, und wenn es nicht 'UTC', herauszufinden, ob eine Umrechnung auf UTC wird dieDateTime
angegebentest
fallen außerhalb dieser Grenzen - laut der MSDN-Dokumentation, dieMinValue
undMaxValue
(UTC) '1/1/0001 12:00:00 +00:00' und '12/31/9999 11:59:59 +00:00" bezeichnet.Den docs (DateTimeOffset.MinValue) beachten Sie, dass:
"Jeder DateTimeOffset-Wert umgewandelt zu UTC (Coordinated Universal Time), bevor die Methode führt den Vergleich mit MinValue. Dies bedeutet, dass ein DateTimeOffset-Wert, dessen Datum und Uhrzeit sind in der Nähe der minimale Bereich, aber deren Einpresstiefe ist positiv, der möglicherweise eine Ausnahme. Zum Beispiel, der Wert 1/1/0001 1:00:00 +02:00 ist außer Reichweite, weil es eine Stunde früher als MinValue, wenn es in UTC konvertiert."
Und auch (DateTimeOffset.MaxValue):
"Jeder DateTimeOffset-Wert umgewandelt zu UTC (Coordinated Universal Time), bevor die Methode vergleicht es mit MaxValue. Dies bedeutet, dass ein DateTimeOffset-Wert, dessen Datum und Uhrzeit sind in der Nähe der maximalen Reichweite, aber deren Einpresstiefe ist negativ, der möglicherweise eine Ausnahme. Zum Beispiel, der Wert 12/31/9999 11:00 Uhr -02:00 Uhr ist out of range, da ist es eine Stunde später als MaxValue, wenn es in UTC konvertiert."
Ist und wie pro die docs (DateTimeOffset-Konstruktor), der offset, der angewendet wird, um eine nicht-UTC -
Kind
ist der "offset für das lokale system die aktuelle Zeitzone".InformationsquelleAutor der Antwort Chamila Chulatunga
Ich hatte gerade dieses Problem, eingeführt durch den Artikel von meinem team, dass auf eine negative UTC-zone...
Was chamila_c gepostet wird, ist der wahre Grund, warum dies geschieht, aber ich brauchte eine schnelle Lösung.
Zu "lösen", die ich im Grunde erstellt dieser Erweiterung:
vielleicht wollen Sie auch zu prüfen, gegen MaxValue.
InformationsquelleAutor der Antwort fbiagi