2

我在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 而是在字符串变量中获取日期并以正确的格式对其值进行计算。它的工作

4

3 回答 3

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);
于 2013-02-08T09:02:13.137 回答
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)
于 2013-02-08T09:05:43.427 回答
0

因此,您的问题不是如何将字符串解析为 a DateTimeDatetime.ParseExact而是如何从 a 获取正确的字符串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

于 2013-02-08T09:22:27.710 回答