我已经在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,而是在字符串变量中获取日期,并以正确的格式显示其值。其工作
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
!