Jee*_*att 3 c# culture datetime
我需要以DateTime
不同的文化格式转换值,无论系统中设置什么。
没有选择任何特定的时区进行转换,任何区域性格式都使用转换日期时间值。
DateTimeFormatInfo ukDtfi = new CultureInfo(CultureInfo.CurrentCulture.ToString(), false).DateTimeFormat;
StartingDate = Convert.ToDateTime(System.Web.HttpContext.Current.Session["StartDate"].ToString(), ukDtfi);
Run Code Online (Sandbox Code Playgroud)
我正在使用上面的代码,但它无法正常工作。目前我ar-SA
在我的系统中设置了文化。
让我先澄清一些主题..
\n\n实例DateTime
没有任何时区信息和区域性设置。它只有日期和时间值。文化设置概念仅在您获得文本时才适用字符串)表示形式时才适用。
由于您使用ar-SA
区域性,因此您的字符串格式不是该区域性的标准日期和时间格式。
var dt = DateTime.Parse("31/1/2016 12:00 AM", CultureInfo.GetCultureInfo("ar-SA"));\n// Throws FormatException\n
Run Code Online (Sandbox Code Playgroud)\n\n并且您无法使用区域性解析此字符串ar-SA
,因为此区域性使用\xd8\xb5
a AMDesignator
,因为它使用UmAlQuraCalendar
而不是 a GregorianCalendar
。
您可以使用InvariantCulture
( 它用作AM
aAMDesignator
并使用GregorianCalendar
) 代替DateTime.ParseExact
方法并准确指定其格式。
string s = "31/1/2016 12:00 AM";\nDateTime dt = DateTime.ParseExact(s, "dd/M/yyyy hh:mm tt", \n CultureInfo.InvariantCulture);\n
Run Code Online (Sandbox Code Playgroud)\n\n在你的情况下;
\n\nStartingDate = DateTime.ParseExact(System.Web.HttpContext.Current.Session["StartDate"].ToString(), \n "dd/M/yyyy hh:mm tt", \n CultureInfo.InvariantCulture);\n
Run Code Online (Sandbox Code Playgroud)\n