2

我在 c# 中的代码下方,我将我的字符串类型格式日期转换为日期时间,但给出了错误。

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")的是字符串类型数据,它返回“31/01/2011 00:00:00”格式日期,在上面我使用DateTime.ParseExact它的代码中给了我System.FormatException: String was not recognized as a valid DateTime.错误。

请提出问题所在。

谢谢。

4

4 回答 4

5

您描述的示例日期(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)。

于 2011-02-16T06:58:15.200 回答
1

可能是因为mmm(没有这样的月份格式),请尝试MMM。(看起来像二月/一月/等)

于 2011-02-16T06:50:03.923 回答
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)
于 2011-02-16T06:55:00.257 回答
0

尝试 DateTime ExpiryDate = DateTime.ParseExact(SessionDictionary.GetValue("UserDetails", "ExpiryDate"), "g", null);

或在这里查看:http: //msdn.microsoft.com/en-us/library/8kb3ddd4.aspx

于 2011-02-16T06:57:24.417 回答