![](/img/trans.png)
[英]String was not recognized as a valid DateTime using DateTime.ParseExact C#
[英]Giving System.FormatException: String was not recognized as a valid DateTime. using datetime.ParseExact in C#
我在c#中的代码下面,在这里我将字符串类型的格式date转换为datetime,但给出了错误。
if (!string.IsNullOrEmpty(SessionDictionary.GetValue("UserDetails", "ExpiryDate")))
{
DateTime ExpiryDate = DateTime.ParseExact(SessionDictionary.GetValue("UserDetails", "ExpiryDate"), "dd mmm yy", null);
strDate = sitedata.FormatDate(ExpiryDate, TridionDateFormat.ShortDate);
}
else
{
strDate = "-";
}
我的SessionDictionary.GetValue("UserDetails", "ExpiryDate")
是字符串类型的数据,它在我使用DateTime.ParseExact
上述代码中返回格式为“ 31/01/2011 00:00:00”的日期,这给了我System.FormatException: String was not recognized as a valid DateTime.
错误。
请指出出什么问题了。
谢谢。
您描述的示例日期(31/01/2011 00:00:00)看起来像是dd / MM / YYYY HH:mm:ss格式,那么为什么要使用dd mmm yyyy?
尝试
DateTime.ParseExact(..., "dd/MM/yyyy HH:mm:ss", CultureInfo.InvariantCulture);
请注意使用HH(24小时制)而不是hh(12小时制),并注意使用InvariantCulture,因为某些区域性使用的不是斜杠,而是分隔符。
例如,如果区域性是de-DE,则格式“ dd / MM / yyyy”将以句点作为分隔符(31.01.2011)。
可能是由于mmm (没有这样的月份格式),请改用MMM 。(看起来像2月/ 1月/等)
您使用错误的格式来解析日期。 正确的是:
DateTime ExpiryDate = DateTime.ParseExact(SessionDictionary.GetValue("UserDetails", "ExpiryDate"), "dd/MM/yyyy hh:mm:ss", null)
另外,如果系统日期格式设置为dd/MM/yyyy
,则可以简单地使用:
DateTime ExpiryDate = DateTime.ParseExact(SessionDictionary.GetValue("UserDetails", "ExpiryDate"), "G", null)
尝试DateTime ExpiryDate = DateTime.ParseExact(SessionDictionary.GetValue("UserDetails", "ExpiryDate"), "g", null);
或在这里看到: http : //msdn.microsoft.com/en-us/library/8kb3ddd4.aspx
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.