我正在尝试将来自文本框的字符串(例如,格式为"2014年3月24日"(转换为DateTime。这就是我正在尝试的:
CultureInfo us = new CultureInfo("en-US");
dtAssemblyDate = DateTime.ParseExact(txtOperationSignatureDate.Value, "dd/MM/yyyy", us);
或
dtAssemblyDate = DateTime.ParseExact(txtOperationSignatureDate.Value, "dd/MM/yyyy", null);
但运气不好,我遇到了无法将值转换为DateTime的异常情况。如何解决此问题?
03/24/2014
不是dd/MM/yyyy
格式的有效日期(一年中只有12个月1(。
请将格式字符串更改为MM/dd/yyyy
,或者使用所选格式的有效日期。
1:在某些类型的Calendar
中为13个月,但"en-US"
使用12个月的公历
DateTime myDate = DateTime.ParseExact("24/03/2014", "dd/MM/yyyy",
System.Globalization.CultureInfo.InvariantCulture);
03/24/2014
将月份的日期作为中间组件。这可能看起来很奇怪,但在世界某些地区(主要是北美(就是这样做的。
因此,在指定解析格式时,还必须将月份的天(dd
(放在中间:
CultureInfo us = new CultureInfo("en-US");
dtAssemblyDate = DateTime.ParseExact(txtOperationSignatureDate.Value, "MM/dd/yyyy", us);
显然,不可能解析同时接受中端(MM/dd/yyyy
(和小端(dd/MM/yyyy
(日期的文本字段,因为像01/02/2014
这样的模糊性无法自动解决。
如果字符串以MM/dd/yyyy格式表示,则
CultureInfo us = new CultureInfo("en-US");
dtAssemblyDate = DateTime.ParseExact(txtOperationSignatureDate.Value, "MM/dd/yyyy", us);
但我更喜欢使用DateTime.TryParse来避免意外。。。
if(DateTime.TryParse(txtOperationSignatureDate.Value,
CultureInfo.InvariantCulture,
DateTimeStyles.None,
out dtAssemblyDate))
Console.WriteLine(dtAssemblyDate.ToShortDateString());
CultureInfo us = new CultureInfo("en-US");
DateTime dt = Convert.ToDateTime(txtOperationSignatureDate.Value, us.DateTimeFormat);
无论您需要什么DateTimeFormat,您只需要传递相应的区域性即可。
尝试使用
字符串日期=文本框。价值
DateTime dt=转换为DateTime(日期(;