delphi – 为什么DateUtils.pas中的DateTimeToMilliseconds被标记为内部?

delphi – 为什么DateUtils.pas中的DateTimeToMilliseconds被标记为内部?,第1张

概述为什么DateUtils.pas中的DateTimeToMilliseconds被标记内部? 我可以用吗? { Internal, converts a date-time to milliseconds }function DateTimeToMilliseconds(const ADateTime: TDateTime): Int64;var LTimeStamp: TTimeSta 为什么DateUtils.pas中的DateTimetoMilliseconds被标记为内部?
我可以用吗?

{ Internal,converts a date-time to milliseconds }function DateTimetoMilliseconds(const ADateTime: TDateTime): Int64;var  LTimeStamp: TTimeStamp;begin  LTimeStamp := DateTimetoTimeStamp(ADateTime);  Result := LTimeStamp.Date;  Result := (Result * MSecsPerDay) + LTimeStamp.Time;end;

[德尔福XE]

我在About.com上发现了这个:

ExperIEnce shows that creating two TDateTime values using the function and EncodeDateTime that are distant from each other only a millisecond,the function returns a MillisecondsBetween not return as was expected,proving that it is not accurate.

所以,如果我不关心几个milisecs,我应该使用它.

解决方法 TDateTime是浮点数的两倍.为了在使用TDateTime值时最小化舍入误差,DateUtils中的大多数计算都将TDateTime转换为毫秒.

稍后当计算准备就绪时,Int64值再次转换回TDateTime值.

内部标记是为了强调该功能是一个实现细节,不能在库外使用.也就是说,在使用TDateTime值时,请使用公共函数/过程.

这是对MilliSecondsBetween函数的一点测试:

program TestMSecBetween;{$APPTYPE CONSolE}uses   System.SysUtils,System.DateUtils;var  d1,d2 : TDateTime;  i,iSec,iMin,iHour,imsec;  isb : Int64;begin  d1 := EncodeDateTime(2013,6,14,0);  for i := 0 to 1000*60*60*24-1 do  begin    iHour := (i div (1000*60*60)) mod 24;    iMin := (i div (1000*60)) mod 60;    iSec := (i div 1000) mod 60;    imsec := i mod 1000;    d2 := EncodeDateTime(2013,imsec);    isb := MilliSecondsBetween(d2,d1);    if (isb <> i) then      WriteLn(i:10,iHour:3,iMin:3,iSec:3,imsec:4,isb:3);  end;  ReadLn;end.

您可以将测试扩展超过一天,以查看是否存在异常.

总结

以上是内存溢出为你收集整理的delphi – 为什么DateUtils.pas中的DateTimeToMilliseconds被标记为内部?全部内容,希望文章能够帮你解决delphi – 为什么DateUtils.pas中的DateTimeToMilliseconds被标记为内部?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1266755.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-08
下一篇 2022-06-08

发表评论

登录后才能评论

评论列表(0条)

保存