Datetime.ParseExact()不起作用

本文关键字:不起作用 ParseExact Datetime | 更新日期: 2023-09-27 17:58:23

我已经在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是2013年2月8日上午7:00:24,而不是2013年8月2日上午07:00:24

知道我缺了什么吗?

在得到这个值之后,我正在运行一个查询并得到这个错误

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

大家好,我得到了解决方案,我现在不是传递lastUpdateTimestamp,而是在字符串变量中获取日期,并以正确的格式显示其值。其工作

Datetime.ParseExact()不起作用

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);

来自注释:

我得到的输出是lastUpdateTimestamp.ToString()。它应该是2013年8月2日07:00:24 am,但它显示的是2013年2月8日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)

因此,您的问题不是如何用Datetime.ParseExact将字符串解析为DateTime,而是如何从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