1

我有一个名为 currMonth 的 TDateTime 变量。currMonth 的值为“2000 年 6 月 30 日晚上 11:59:59”。我需要插入 currMonth 作为 TDBGrid 中名为 dtBegin 的字段的默认值。

我试试这段代码:

dtBegin->AsDateTime = currMonth;

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

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

提前致谢。

4

1 回答 1

2

您在 Embarcadero 论坛上发布的同一问题与您在此处发布的同时有许多回复。

简而言之,没有任何问题。 TDateTime被实现为double内部。调试检查器只是double按原样向您显示该值,而不是您期望的格式化日期/时间字符串。这是正常行为,您TDateTime自己将在您的代码中正常工作。您使用的是旧版本的 C++Builder,因此您没有TDateTime新版本的 C++Builder 用于更好地显示TDateTime值的调试可视化工具,仅此而已。

如果您需要TDateTime在调试器中以格式化方式查看值,则必须在 Watch List 中定义一个条目,该条目调用 RTL 的DateTimeToStr()函数或TDateTime::FormatString()方法,并向您显示结果。

于 2013-02-14T15:00:18.563 回答