此日历不支持指定的时间

时间:2014-11-03 11:15:44

标签: datetime razor asp.net-mvc-5 arabic

此日历不支持指定的时间。它应该在04/30/1900 00:00:00(格里高利日)和11/16/2077 23:59:59(格里高利日期)之间。 参数名称:时间

描述:执行当前Web请求期间发生了未处理的异常。请查看堆栈跟踪以获取有关错误及其源自代码的位置的更多信息。

异常详细信息:System.ArgumentOutOfRangeException:此日历不支持指定的时间。它应该在04/30/1900 00:00:00(格里高利日)和11/16/2077 23:59:59(格里高利日期)之间。 参数名称:时间

我试图在MVC 5中使用[DataType(DataType.Date)]时遇到此错误与阿拉伯文化

由于

3 个答案:

答案 0 :(得分:0)

在Windows中更改日期和时间设置>更改日历设置>将日历类型更改为Gregorian。

答案 1 :(得分:0)

我遇到了同样的问题,但在asp.net mvc中使用了日历工具。我将日历改为Gregorian,它解决了我的问题。

var culture = new CultureInfo(cultureCode, true);
//set Gregorian as default calendar
CalendarUtilities.ChangeCalendar(culture, new GregorianCalendar());

public class CalendarUtilities
    {
        private readonly Calendar newCal;
        private readonly bool isGregorian;

        public static void ChangeCalendar(CultureInfo ci, Calendar cal)
        {
            var util = new CalendarUtilities(cal);

            // Is the new calendar already the current calendar?
            if (util.CalendarExists(ci.DateTimeFormat.Calendar))
                return;

            // Is the new calendar supported?
            if (Array.Exists(ci.OptionalCalendars, util.CalendarExists))
                ci.DateTimeFormat.Calendar = cal;
        }

        private CalendarUtilities(Calendar cal)
        {
            newCal = cal;

            // Is the new calendar a Gregorian calendar?
            isGregorian = cal.GetType().Name.Contains("Gregorian");
        }

        private bool CalendarExists(Calendar cal)
        {
            if (cal.ToString() == newCal.ToString())
            {
                if (isGregorian)
                {
                    if (((GregorianCalendar)cal).CalendarType ==
                        ((GregorianCalendar)newCal).CalendarType)
                        return true;
                }
                else
                {
                    return true;
                }
            }
            return false;
        }
    }

答案 2 :(得分:0)

我提出这一希望可以节省其他时间 如果您使用的是.net core并出现此类错误 此日历不支持指定的时间。它应该在...之间。 用这样的东西 请注意,某些浏览器会出现错误,并非所有网络浏览器都会返回此错误 Firefox几乎不会在chrome上触发此错误,而IE和Edje会触发此类错误

[HttpPost]
    public IActionResult SetLanguage(string culture, string returnUrl)
    {
        if (string.IsNullOrEmpty(culture))
        {
            return LocalRedirect(returnUrl);
        }
        CultureInfo cInfo = new CultureInfo(culture);
        CultureInfo cInfoInvarian = new CultureInfo("en-GB");
        cInfoInvarian.DateTimeFormat.ShortDatePattern = "dd-MM-yyyy";
        cInfoInvarian.DateTimeFormat.ShortDatePattern = "dd-MM-yyyy";
        cInfoInvarian.DateTimeFormat.Calendar = new GregorianCalendar();
        cInfo.DateTimeFormat.Calendar = new GregorianCalendar();
        Response.Cookies.Append(
            CookieRequestCultureProvider.DefaultCookieName,
            CookieRequestCultureProvider.MakeCookieValue(new RequestCulture(cInfoInvarian, cInfo)),
            new CookieOptions { Expires = DateTimeOffset.UtcNow.AddYears(1) }
        );

        return LocalRedirect(returnUrl);
    }