Datetime.ParseExact()不起作用

时间:2013-02-08 08:55:24

标签: c# asp.net datetime

我在c#

中编译了以下代码
string datetime = String.Format("{0:MM/dd/yyyy hh:mm:ss tt}", root.SelectSingleNode("lasttime").InnerText);



lastUpdateTimestamp = DateTime.ParseExact(datetime, "MM/dd/yyyy hh:mm:ss tt", CultureInfo.CurrentCulture);

但在输出中我得到lastUpdateTimestamp是2/8/2013 7:00:24 AM而不是02/08/2013 07:00:24 AM

知道我错过了什么吗?

获取此值后,我正在运行查询并收到此错误

Invalid month in timestamp "2": cannot find leading zero [SQL query syntax invalid or unsupported.]

大家好,我得到了解决方案,而不是传递lastUpdateTimestamp,我现在在字符串变量中取日期,并以适当的格式调整其值。它的工作

3 个答案:

答案 0 :(得分:3)

root.SelectSingleNode("lasttime").InnerText返回一个字符串。

您正在尝试使用DateTime格式说明符来格式化字符串。

不确定你要做什么,但这样的事情应该有效

string xmlstring = root.SelectSingleNode("lasttime").InnerText;
DateTime parsed = DateTime.ParseExact(xmlstring, "M/d/yyyy h:mm:ss tt");

string datetime = string.Format("{0:MM/dd/yyyy hh:mm:ss tt}", parsed);

答案 1 :(得分:0)

来自评论:

  

我将输出为lastUpdateTimestamp.ToString()。它应该是02/08/2013 07:00:24 AM但它显示2/8/2013 7:00:24 AM

lastUpdateTimestamp.ToString()将使用当前文化的常规日期时间格式进行格式化。在您的情况下,这显然是M/dd/yyyy...

如果您需要不同的格式,则需要将其指定为DateTime.ToString的参数,例如:

lastUpdateTimestamp.ToString("MM/dd/yyyy hh:mm:ss tt")

或独立于当前文化的固定格式:

lastUpdateTimestamp.ToString("MM/dd/yyyy hh:mm:ss tt", CultureInfo.InvariantCulture)

答案 2 :(得分:0)

因此,您的问题不是如何使用DateTime将字符串解析为Datetime.ParseExact,而是如何从DateTime获取正确的字符串:

DateTime dt = DateTime.Now;
string dtStr = dt.ToString("dd/MM/yyyy hh:mm:ss tt"
                          , System.Globalization.CultureInfo.InvariantCulture);

结果:

08/02/2013 10:20:18 AM

但是,因为您从数据库中获得了异常:

  

无法找到前导零[SQL查询语法无效或不受支持

您应该使用参数并传递DateTime而不是string