比较两个TDateTime变量

时间:2012-09-26 12:21:15

标签: c++ compare c++builder tdatetime

我正在使用C ++ Builder,我想要一些帮助,看看两次是否相同。

这是我的代码:

TDateTime appDateFromVector = TimeOf(appointmentsForFind[i].getAppDateTime());
DateTime appDateFromControl = TimeOf(DateTimePickerAppointmentTime->Time);

这些值看起来是一样的。我通过ShowMessage语句检查过,显示的消息都是时间格式,它们是相同的值。

比较时,请使用以下声明:

if (appDateFromVector == appDateFromControl)

我没有得到真实的陈述。是否需要另一个过程来检查两次是否相同?

由于

2 个答案:

答案 0 :(得分:1)

这是来自Embarcadero文件

  

System :: TDateTime类继承声明为a的val数据成员   保存日期时间值的double。 a的组成部分   System :: TDateTime值是自那以后经过的天数   12/30/1899。 System :: TDateTime值的小数部分是   时间。

使用==运算符时,这个双精度数经过测试,因此非常微小的时间差异可能导致明显相似的时间出现不等。您应该考虑测试相等性所需的准确度分辨率(例如,到最接近的秒),然后考虑使用将日期时间转换为适当格式化的字符串并测试字符串相等性的函数。

这是我测试时间相等的方式,但是对于相等测试,我从不需要比一秒更高的分辨率。看一下这个,将TDateTime输出为string

答案 1 :(得分:0)

C ++ Builder有一些helper functions用于比较TDateTime值。请查看我在下面的示例中包含的CompareTimeSameTime

TDateTime TimeA, TimeB;

// offset TimeB by one hour
TimeA = Now();
TimeB = IncHour(TimeA, 1);

// use CompareTime function
if (CompareTime(TimeA, TimeB) == EqualsValue)
{
  ShowMessage("Both times are equal.");
} 

// use SameTime function
if (SameTime(TimeA, TimeB))
{
  ShowMessage("Both times are equal.");
}