繁体   English   中英

DateTime.ParseExact()令人困惑

[英]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中,该代码有效。 不需要更改该字符串

通过指定ddMM您需要输入为2个字符宽。您的代码将适用于2015年10/10/2015 ,但不适用于1/1/2015

更改您的代码以允许单日和月份字符,你会没事的:

DateTime newDate = DateTime.ParseExact(dt, "d/M/yyyy", null);

我认为你的变量日和月不包含前导0,这就是你的解析不起作用的原因。 以下是对MSDN页面的一些参考,您可以找到有关ParseExactTime格式的更多信息

dd/MM/yyyy需要两位数的日期和月份,如10/09/YYYY ; d/M/yyyy接受一个或数字!

阅读MSDN上格式代码

代码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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM