[英]DateTime.ParseExact() confusing
为什么我可以将该代码应用于其他形式.cs
string dt = day + "/" + month + "/" + year;
DateTime newDate = DateTime.ParseExact(dt, "dd/MM/yyyy", null);
它总是显示错误
字符串未被识别为有效的DateTime。
它必须像这样改变
"dd/MM/yyyy" --> "d/M/yyyy"
但在其他形式.cs中,该代码有效。 不需要更改该字符串
通过指定dd
和MM
您需要输入为2个字符宽。您的代码将适用于2015年10/10/2015
,但不适用于1/1/2015
。
更改您的代码以允许单日和月份字符,你会没事的:
DateTime newDate = DateTime.ParseExact(dt, "d/M/yyyy", null);
我认为你的变量日和月不包含前导0,这就是你的解析不起作用的原因。 以下是对MSDN页面的一些参考,您可以找到有关ParseExact和Time格式的更多信息
dd/MM/yyyy
需要两位数的日期和月份,如10/09/YYYY
; 而d/M/yyyy
接受一个或数字!
代码dt = day + "/" + month + "/" + year
不会将前导零添加到日期和月份。
我建议使用DateTime构造函数 ,如
DateTime newDate = DateTime(year, month, day);
那么你就不会遇到字符串格式的任何问题。
如果你知道日期部分,有一种简单的方法来构造DateTime
:
来自ints:
int day = 1;
int month = 1;
int year = 2015;
DateTime newDt = new DateTime(year, month, day);
Console.WriteLine(newDt);
来自字符串:
string sday = "1";
string smonth = "1";
string syear = "2015";
DateTime newDts = new DateTime(int.Parse(syear), int.Parse(smonth), int.Parse(sday));
Console.WriteLine(newDts);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.