XMLTimeToDateTime忽略毫秒
发布时间:2020-12-15 04:05:22 所属栏目:大数据 来源:网络整理
导读:为什么 XMLTimeToDateTime会忽略毫秒? Test := XMLTimeToDateTime('2011-11-11T12:41:36.696+01:00',TRUE); T2 := FormatDateTime('yyyy''-''mm''-''dd''T''hh'':''nn'':''ss''.''zzz',Test); 之后T2 =’2011-11-11T11:41:36.000′ 我正在使用Delphi 2007
为什么
XMLTimeToDateTime会忽略毫秒?
Test := XMLTimeToDateTime('2011-11-11T12:41:36.696+01:00',TRUE); T2 := FormatDateTime('yyyy''-''mm''-''dd''T''hh'':''nn'':''ss''.''zzz',Test); 之后T2 =’2011-11-11T11:41:36.000′ 我正在使用Delphi 2007. 解决方法
XSBuiltIns中的代码确实解析了毫秒部分,但这部分从未用于编码函数.
function TXSBaseTime.GetAsTime: TDateTime; begin Result := EncodeTime(Hour,Minute,Second,0); end; 和 function TXSBaseCustomDateTime.GetAsDateTime: TDateTime; var BiasDT: TDateTime; BiasTime,BiasLocal: Integer; BiasHour,BiasMins: Word; begin { NOTE: In XML Years can exceed 9999 - that's not the case for TDateTime. So here,there would be a problem with the conversion } Result := EncodeDateTime(Year,Month,Day,Hour,0); 和 function TXSBaseCustomDateTime.GetAsUTCDateTime: TDateTime; var AdjustDT: TDateTime; begin Result := EncodeDateTime(Year,0); 由于最后一个是从XMLTimeToDateTime调用的,因此毫秒部分始终为0是完全可以理解的. 所有解析和数据存储都在内部(实现部分)类中完成,除了通过(损坏的)包装器之外,这些类不能直接访问. IOW,你应该编写自己的日期/时间解析器. 除了在XSBuiltIns中找到的所有丑陋之外,XMLTimeToDateTime实际上两次解析日期.首先调用TXSDateTime.XSToNative,它解析日期/时间,抛出结果并仅存储原始字符串,然后TXSCustomDateTime.GetAsUTCDateTime再次解析此字符串. Euch! (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |