我在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,我现在在字符串变量中取日期,并以适当的格式调整其值。它的工作
答案 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
!