c# – 在asp.net中接收阿拉伯语日期时间错误
我使用ADO断开模式通过填充数据集ds从数据库获取数据.
除日期字段外,所有数据都成立 string strDate = ds.Tables[0].Rows[0]["H_DT"].ToString(); 抛出异常说:
我试着写这段代码 System.Threading.Thread.CurrentThread.CurrentCulture = new CultureInfo("ar-sa"); System.Threading.Thread.CurrentThread.CurrentUICulture = new CultureInfo("ar-sa"); 把文化改成阿拉伯语,但没有任何运气. 更新 以下是变量快速监视的屏幕截图 解决方法
从
DateTime.ToString method起
您的ar-sa文化的默认日历是 var culture = CultureInfo.GetCultureInfo("ar-sa"); Console.WriteLine(culture.Calendar); // prints UmAlQuraCalendar 从
由于你的DateTime是1,1,198,因此抛出ArgumentOutOfRangeException太正常了. 您可以解决您的问题,在DateTime.ToString()方法中提供参数 string strDate = ds.Tables[0].Rows[0]["H_DT"].ToString(CultureInfo.InvariantCulture);
默认情况下,DateTime属于公历.从
这意味着您的ds.Tables [0] .Rows [0] [“H_DT”]日期时间默认为格里高利日历.但是,由于您使用的是没有任何参数的.ToString()方法,因此您的方法使用的是您自己在web.config中编写的CurrentCulture.并且该文化默认具有UmAlQuraCalendar日历.由于您的日期时间超出了此日历范围,因此您的代码会引发异常. 请记住,在Gregorian日历中,您有一个1318年的日期时间,而UmAlQuraCalendar日历中的年份为1318年. 举个例子; var date = new DateTime(1318,1); Console.WriteLine(date.ToString(new CultureInfo("ar-sa"))); 抛出ArgumentOutOfRangeException异常,因为它与你的情况完全相同.这是一个日历时间,在格里高利日历中是1318年,但是在这个日期时间的UmAlQuraCalendar日历上没有任何代表,因为在UmAlQuraCalendar日历中,年份从格里高利日历中的1900年开始. 看看 //////////////////////////////////////////////////////////////////////////// // // Notes about UmAlQuraCalendar // //////////////////////////////////////////////////////////////////////////// /* ** Calendar support range: ** Calendar Minimum Maximum ** ========== ========== ========== ** Gregorian 1900/04/30 2077/11/17 ** UmAlQura 1318/01/01 1500/12/30 */ (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |