XML日期和时间为格式
‘ – ‘? yyyy’ – ‘mm’ – ‘dd’T’hh’:’mm’:’ss(‘。 (ZZZZZZ)?
是
• ‘ – ‘? yyyy是一个四位数或更多位数,可选负号数字,代表年份;如果超过四位数,则禁止前导零,并禁止“0000”
•剩余的“ – ”是日期部分的分隔符;
•第一个mm是代表月份的两位数字;
•dd是代表当天的两位数字;
•’T’是一个分隔符,表示时间跟随;
•hh是代表小时的两位数字;如果表示的分钟和秒数为零,则允许’24’,如此表示的dateTime值是第二天的第一个时刻(·值空间中的dateTime对象的hour属性不能大于23) ;
•’:’是时间段部分之间的分隔符;
•第二个mm是代表分钟的两位数字;
•ss表示整数秒的二位数字数字;
•’。 s(如果存在)表示分数秒;
•zzzzzz(如果存在)表示时区(如下所述)。
这里有更多的例子
简单的例子
2009-08-31T19:30:00
更复杂的例子
2002-10-10T12:00:00-05:00(2002年10月10日中午,中央夏令时以及美国东部标准时间)是2002-10-10T17:00:00Z,比2002年五个小时-10-10T12:00:00Z。
有关更多信息,请参阅www.w3.org/TR/2004/REC-xmlschema-2-20041028/datatypes.html
解决方法
Delphi有一个
XSBuiltIns单元(自Delphi 6以来),它包含可以帮助您转换一些XML数据类型的数据类型:
> TXSDate
> TXSTime
> TXSDateTime
(还有更多,像@L_502_5@,你得到的想法)
所有这些至少包含这两种方法:
> NativeToXS
> @L_301_7@
你可以这样使用:
with TXSDateTime.Create() do try AsDateTime := ClientDataSetParam.AsDateTime; // convert from TDateTime Attribute.DateTimeValue := NativeToXS; // convert to WideString finally Free; end; with TXSDateTime.Create() do try XSToNative(XmlAttribute.DateTimeValue); // convert from WideString CurrentField.AsDateTime := AsDateTime; // convert to TDateTime finally Free; end;
那应该让你走了
–jeroen