繁体   English   中英

给定System.FormatException:字符串未被识别为有效的DateTime。 在C#中使用datetime.ParseExact

[英]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.

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