web-dev-qa-db-ja.com

オフセットが適用されるときに表されるUTC時間は、0年から10、000年の間でなければなりません。パラメータ名:オフセット

ASP.NETMVC3コントローラーに次のコードがあります。

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));
    }

私のビューモデルはDateTimeOffset?

例外がスローされる理由は何ですか?

21
Babu James

私はこの問題を抱えていて、負のUTCゾーンにいる私のチームの一部によって紹介されました...

Chamila_cが投稿したのは、これが発生する本当の理由ですが、迅速な修正が必要でした。

「解決する」ために、基本的にこの拡張機能を作成しました。

public static class DateTimeExtensions
{
    public static DateTimeOffset ToDateTimeOffset(this DateTime dateTime)
    {
        return dateTime.ToUniversalTime() <= DateTimeOffset.MinValue.UtcDateTime
                   ? DateTimeOffset.MinValue 
                   : new DateTimeOffset(dateTime);
    }
}

maxValueと照合することもできます。

10
fbiagi