TDateTime值有什么问题

时间:2013-02-14 09:47:36

标签: c++builder tdbgrid tdatetime tfield

我有一个名为currMonth的TDateTime变量。 currMonth的价值是“6/30/2000 11:59:59 PM”。 我需要插入currMonth作为TDBGrid中一个名为dtBegin的字段的默认值。

我试试这段代码:

dtBegin->AsDateTime = currMonth;

编译器成功编译项目,但是当我调试它时,我得到的dtBegin值不是“6/30/2000 11:59:59 PM”,而是{36738.9999999884}。

任何人都知道这个TDateTime对象有什么问题吗?

提前致谢。

1 个答案:

答案 0 :(得分:2)

在您发布此处的同时,对your same question that you posted on the Embarcadero forum有很多回复。

简而言之,没有任何错误。 TDateTime在内部实施为double。调试检查器仅向您显示double值为原样,而不是您期望的格式化日期/时间字符串。这是正常行为,您的TDateTime本身可以在您的代码中正常运行。您正在使用旧版本的C ++ Builder,因此您没有TDateTime调试可视化工具,而C ++ Builder的新版本可以更好地显示TDateTime值,这就是全部。

如果需要在调试器中以格式化方式查看TDateTime值,则必须在监视列表中定义一个调用RTL的DateTimeToStr()函数或{{1}的条目方法,并将结果显示给您。