You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Embarcadero的EncodeDateTime文档是否有误?调用触发异常求助

为什么调用EncodeDateTime(2008,1,1,24,0,0,0)会触发异常?

这其实是Embarcadero文档表述和函数实际实现之间的一个容易误导人的小差异。

虽然文档说明小时值范围是0至24,且当小时为24时分、秒、毫秒需均为0时,生成的是次日午夜的TDateTime,但实际在大多数Delphi/Embarcadero RAD Studio版本中,EncodeDateTime的小时参数并不直接接受24这个值——哪怕你满足分秒毫秒全为0的条件,函数内部的参数校验还是会判定24是无效值,从而抛出异常。

如果想要生成2008年1月1日结束、1月2日开始的午夜时间,正确的做法有两种:

  • 直接编码次日的午夜时间:EncodeDateTime(2008, 1, 2, 0, 0, 0, 0)
  • 用日期偏移函数生成:IncDay(EncodeDateTime(2008, 1, 1, 0, 0, 0, 0), 1)

简单来说,文档里的“小时值范围0至24”更像是一种逻辑上的边界表述,但函数的实际参数校验并没有把24纳入合法输入范围,这就是你触发异常的核心原因。

内容的提问来源于stack exchange,提问作者zeus

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 06:55:53