将字符串解析为C#中的DateTime对象

3
我将尝试把一个包含日期和时间的字符串转换为.NET DateTime对象。以下是我的代码:
string dtObjFormat = "dd MMM YYYY HH:mm";
string mydatetimemash = e.Date + " " + e.Time; // this becomes 25 May 2013 10:30
DateTime dt;

if (DateTime.TryParseExact(mydatetimemash, dtObjFormat, CultureInfo.InvariantCulture, DateTimeStyles.None, out dt))
{
    Console.WriteLine(dt);
} else 
{
    dt = DateTime.Now;
    Console.WriteLine(dt);
}

但是对于我来说,TryParseExact总是返回false,这意味着解析失败。我做错了什么?

5
我认为你的 Y 需要小写。 - JMK
2
@JKM 我敢打赌这只是测试代码,在真正的代码中他会解析真实的日期。 - Matthew Watson
我正在使用控制台进行调试打印。我还有其他想要使用DateTime对象完成的事情 ;) - J86
肯定的,@JMK 给出了正确的答案。DateTime.TryParseExact("25 May 2013 10:30", "dd MMM yyyy HH:mm", CultureInfo.InvariantCulture, DateTimeStyles.None, out dt) 是有效的,而使用 "YYYY" 的变体则无法正常工作。 - Jeppe Stig Nielsen
该对象是表示日期的字符串,因此它是我从正在解析的XML文件中获取的字符串对象。快点把它发布为答案吧!:P - J86
显示剩余2条评论
1个回答

2

您的Y需要小写,如下所示:

string dtObjFormat = "dd MMM yyyy HH:mm";
string mydatetimemash = e.Date + " " + e.Time; // this becomes 25 May 2013 10:30
DateTime dt;

if (DateTime.TryParseExact(mydatetimemash, dtObjFormat, CultureInfo.InvariantCulture, DateTimeStyles.None, out dt))
{
    Console.WriteLine(dt);
} else 
{
    dt = DateTime.Now;
    Console.WriteLine(dt);
}

哈哈,终于成功了 :D 非常感谢JMK。^_^ - J86

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接