Abr*_*sef 7 c# culture datetime calendar
我使用ADO断开模式通过填充数据集ds从数据库获取数据.除日期字段外,所有数据都成立
string strDate = ds.Tables[0].Rows[0]["H_DT"].ToString();
Run Code Online (Sandbox Code Playgroud)
抛出异常说:
此日历不支持指定的时间.它应该在04/30/1900 00:00:00(格里高利日)和11/16/2077 23:59:59(格里高利日期)之间.
我试着写这段代码
System.Threading.Thread.CurrentThread.CurrentCulture = new CultureInfo("ar-sa");
System.Threading.Thread.CurrentThread.CurrentUICulture = new CultureInfo("ar-sa");
Run Code Online (Sandbox Code Playgroud)
把文化改成阿拉伯语,但没有任何运气.
以下是变量快速监视的屏幕截图
Son*_*nül 10
该
ToString()
方法返回当前区域性使用的日历中日期和时间的字符串表示形式.如果当前DateTime
实例的值早于Calendar.MinSupportedDateTime
或晚于 该值,则Calendar.MaxSupportedDateTime
该方法抛出一个ArgumentOutOfRangeException
.
您的ar-sa
文化的默认日历是UmAlQuraCalendar
日历.
var culture = CultureInfo.GetCultureInfo("ar-sa");
Console.WriteLine(culture.Calendar); // prints UmAlQuraCalendar
Run Code Online (Sandbox Code Playgroud)
来自UmAlQuraCalendar.MinSupportedDateTime
物业
UmAlQuraCalendar类支持的最早日期和时间,相当于公历1900年4月30日公历的第一时刻.
既然你DateTime
是1, 1, 1398
,那就抛出太正常了ArgumentOutOfRangeException
.
您可以解决您的问题,IFormatProvider
在您的DateTime.ToString()
方法中提供GregorianCalendar
默认情况下的参数.你可以使用InvariantCulture
例如.
string strDate = ds.Tables[0].Rows[0]["H_DT"].ToString(CultureInfo.InvariantCulture);
Run Code Online (Sandbox Code Playgroud)
我在web配置中写了全球化配置,因为
ar-sa
在所有应用程序中都是全局的,但我遇到了同样的错误,请澄清我,谢谢
A 默认DateTime
属于公历.从结构 ;DateTime
每个
DateTime
成员隐式使用公历来执行其操作,但指定日历的构造函数和带有参数的方法除外IFormatProvider
,例如System.Globalization.DateTimeFormatInfo
,它隐式指定日历.
这意味着您的ds.Tables[0].Rows[0]["H_DT"]
日期时间默认为格里高利日历.但是,由于您使用的.ToString()
方法没有任何参数,因此您的方法使用的CurrentCulture
是ar-sa
您在web.config中编写的方法.而且这种文化UmAlQuraCalendar
默认具有日历.由于您的日期时间超出了此日历范围,因此您的代码会引发异常.
请记住,你有一个DateTime
与1318
在公历一年,不是 1318
在一年UmAlQuraCalendar
压延机.
举个例子;
var date = new DateTime(1318, 1, 1);
Console.WriteLine(date.ToString(new CultureInfo("ar-sa")));
Run Code Online (Sandbox Code Playgroud)
抛出ArgumentOutOfRangeException
异常,因为它与你的情况完全相同.这是1318
日历时间,这是格里高利日历中的一年,但是没有关于UmAlQuraCalendar
此日期时间的日历表示,因为在UmAlQuraCalendar
日历中,年份从1900
格里高利日历开始.
看看UmAlQuraCalendar
日历是如何实现的 ;
////////////////////////////////////////////////////////////////////////////
//
// Notes about UmAlQuraCalendar
//
////////////////////////////////////////////////////////////////////////////
/*
** Calendar support range:
** Calendar Minimum Maximum
** ========== ========== ==========
** Gregorian 1900/04/30 2077/11/17
** UmAlQura 1318/01/01 1500/12/30
*/
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
4110 次 |
最近记录: |