我在c#中的代码下面,我将字符串类型格式的日期转换为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")
是字符串类型数据,返回“31/01/2011 00:00:00”格式的日期,在上面的代码中我使用DateTime.ParseExact
它给了我{{1}错误。
请说明出了什么问题。
感谢。
答案 0 :(得分: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)。
答案 1 :(得分:1)
可能是因为 mmm (没有这样的月份格式),请尝试 MMM 。(看起来像2月/ 1月等)
答案 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)
答案 3 :(得分:0)
尝试
DateTime ExpiryDate = DateTime.ParseExact(SessionDictionary.GetValue("UserDetails", "ExpiryDate"), "g", null);