繁体   English   中英

无法将字符串识别为格式yyMMdd的有效DateTime

[英]String was not recognized as a valid DateTime for format yyMMdd

我有一个类似下面的字符串:

"9/30/2017 12:00:00 AM"

希望将其转换为格式yyMMdd

 var evan = dataRow["ValueDate"].ToString(); //Output is "9/30/2017 12:00:00 AM"  
 DateTime dt = DateTime.ParseExact(evan,"yyMMdd",CultureInfo.InvariantCulture);

比发挥作用:

dt.ToString("yyMMdd");

错误消息:无法将字符串识别为格式yyMMdd的有效DateTime

我怎么了

谢谢

ParseExact用于解析以特定格式输入的字符串。 要显示该字符串,请将格式字符串传递给ToString方法:

var evan = dataRow["ValueDate"].ToString("yyMMdd");

DateTime.ParseExact期望您提供的数据为您指定的精确格式。 您的字符串9/30/2017 12:00:00 AM与您的格式yyMMdd不匹配。 因此,要么尝试仅使用DateTime.Parse ,要么使您的格式与数据匹配。 就像是

DateTime dt = DateTime.ParseExact(evan,"M/dd/yyyy HH:mm:ss tt",CultureInfo.InvariantCulture);`

然后,您应该可以执行dt.ToString("yyMMdd");

从海报收集信息后,我成功地理解并解决了我的错误:

在仔细咨询了MSDN之后,这就是我一直在寻找的解决方案:

输入

dataRow["ValueDate"].ToString() //  "9/30/2017 12:00:00 AM"

代码:

 DateTime convertedDate;
 convertedDate=Convert.ToDateTime(dataRow["ValueDate"].ToString());
 var evan = convertedDate.ToString("yyMMdd");  

输出:

"170930" //just like I need

就像迈克尔·夏普(Michael Sharp)先前解释的那样:

DateTime.ParseExact期望您提供的数据为您指定的精确格式。 我的字符串yyMMdd 9/30/2017 12:00:00 AM与我的格式yyMMdd不匹配

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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