为什么 TTime 比较会产生意外结果?

2024-04-03

我观察到一些关于EncodeDateTime and EncodeTime方法,我正在寻求一些解释。

procedure SomeTestCase;
var
    time: TTime;
    dateTime: TDateTime;
begin
    time := EncodeTime(8, 0, 0, 0);
    date := EncodeDateTime(2012, 11, 2, 8, 0, 0, 0);

    Assert(time = TimeOf(date)); //Fails
end;

我发现的是date的小时部分评估为7:59:59代替8:00:00。但如果我设置的小时部分time and date到 9,断言通过并且date评估为预期值。有些时间可以工作,有些则不能。有人可以解释一下发生了什么事吗?


时间值(TTime, TDate, TDateTime)实际上是一个double(即浮点值),日期用整数部分编码,时间用小数部分编码。测试浮点值的相等性总是有风险的。

您可以使用SameTime(time, date)反而。这正确地补偿了“数字大惊小怪”:Result := Abs(Frac(A) - Frac(B)) < OneMillisecond;

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

为什么 TTime 比较会产生意外结果? 的相关文章

  • 如何将 TGifImage 中的帧提取为位图?

    下面的演示尝试在表单的画布上绘制 GIF 这不起作用 图像不会前进 如何让它发挥作用 procedure TForm1 FormCreate Sender TObject begin GIF TGIFImage Create GIF Loa
  • 如何读取注册表项的默认值

    我有一个 Delphi XE2 项目来使用注册表项进行某些操作 所以我定义了以下代码 procedure TMainForm BitBtn01Click Sender TObject var RegistryEntry TRegistry
  • Sql Server 字符串到日期的转换

    我想像这样转换一个字符串 10 15 2008 10 06 32 PM 转换为 Sql Server 中的等效 DATETIME 值 在 Oracle 中 我会这样说 TO DATE 10 15 2008 10 06 32 PM MM DD
  • 我需要避免尝试更新连接到 TSQLQuery 的 Delphi TClientDataset 中的非物理字段

    概要 我的代码正在尝试更新 Delphi XE 中的非物理字段TClientDataset 连接到TSQLQuery以其SQL属性集 作为运行时的结果创建Open命令 我有一个TClientDataset连接到一个TDatasetProvi
  • Python,Bokeh:如何更改日期时间轴的范围

    我想使用按钮设置日期时间轴的范围 然而 该命令 f x range Range1d start start date end end date 不起作用 单击按钮时没有任何反应 无论是在运行 Bokeh 服务器的终端窗口中 还是在 Chro
  • 合并两个 Joda-Time Interval 对象

    In 乔达时间 http www joda org joda time 有什么办法可以创建一个Interval http www joda org joda time apidocs org joda time Interval html作
  • Java 8,为什么不是 ZonedTime 类?

    我发现 Java 8 没有等效的分区日期时间 http docs oracle com javase 8 docs api java time ZonedDateTime html但只能与Time a 分区时间类或类似的东西 I know他
  • PHP - 如何从添加日期算起 60 天

    让我知道 add date date Y m d H m s expiry date how 如何插入到数据库 expiry date60 天 mysql 格式是日期时间 Use strtotime http php net manual
  • grails/mysql 时区更改

    完成更改应用程序时区的最佳方法是什么 在我看来 必须发生以下情况 服务器 TZ 已被系统管理员更改 mysql必须重新启动 数据库中每个基于时间的列都必须使用convert tz 或等效方法更新所有值 因此 要么必须编写一个 mysql 脚
  • Android计算两个日期之间的天数

    我编写了以下代码来查找两个日期之间的天数 startDateValue new Date startDate endDateValue new Date endDate long diff endDateValue getTime star
  • 在 python 中使用高精度时间戳

    嘿 我正在使用 python 处理日期时间 我想知道解析这个时间戳的最佳方法是什么 时间戳是ISO标准 这里是一个例子 2010 06 19T08 17 14 078685237Z 现在到目前为止我已经使用过 time datetime d
  • 从 Ruby 中的 DateTime 变量获取时间

    我在 ruby 中工作 我有一个包含数据库中今天的日期时间的对象 我只想要时间截断数据 我怎样才能得到那个 Try 日期时间 strftime http www ruby doc org stdlib 1 9 3 libdoc date r
  • 如何在 Java 中向时间戳添加/减去时区偏移量?

    我正在使用 JDK 8 并且玩过ZonedDateTime and Timestamp很多 但我仍然无法解决我面临的问题 假设我得到了格式化的Timestamp在格林威治标准时间 UTC 我的服务器位于某处 假设它设置为Asia Calcu
  • 是否可以声明长度受限且不从 0/1 开始的字符串类型?

    在 Delphi 中 可以声明整数值的子范围 例如 type myInt 2 150 它将 myInt 类型的值限制为 2 到 150 之间的值 但是如果我想限制字符串的长度怎么办 如果我写 type myString string 150
  • 如何释放 TInterfacedObject 中的 TObject 成员

    我知道接口对象是引用计数的 因此不需要手动释放它 但如果它有一个 TObject 继承成员 我是否应该在析构函数中手动释放该成员 考虑以下代码 program Project2 APPTYPE CONSOLE R res uses Syst
  • 如何使用 Gmail 的 SMTP 和 Indy 10 发送电子邮件?

    我正在使用 Delphi 2009 和 svn 中最新的 Indy 10 通过 SMTP 发送电子邮件 但它不适用于 Gmail Google Apps 托管域 当我尝试发送电子邮件时 我收到 必须首先发出 STARTTLS 命令 我尝试用
  • 如何在php中关闭夏令时

    我有这行代码将夏令时设置为 打开 将其设置为 关闭 的正确方法是什么 is daylight saving On rcmail config dst active bool date I date I 这是一个大写字母 i 当当前默认时区
  • Java/MongoDB 按日期查询

    我将一个值作为 java util Date 存储在我的集合中 但是当我查询以获取两个特定日期之间的值时 我最终得到的值超出了范围 这是我的代码 插入 BasicDBObject object new BasicDBObject objec
  • 如何使 StringGrid 的列适合网格的宽度?

    我已经寻找解决方案很长时间了 但没有任何运气 有谁知道一个简单的方法来做到这一点 例如 我想拉伸网格的第二列以适应网格的宽度 Use the ColWidths财产 像这样 with StringGrid1 do ColWidths 1 C
  • 从 Delphi VCL 样式获取特定字形

    我想从 VCL 样式获取特定的位图 并将其设置为按钮上的图像 它实际上是帮助问号 在位图样式编辑器中是来自表单的 btnHelp 图像 要从 VCL 样式获取视觉元素 字形 您必须使用GetElementDetails和TCustomSty

随机推荐

  • 查找 iPhone 中两个日期之间的总天数

    我想查找两个日期之间的总天数 例如今天是 01 01 2011 DD MM YYYY 第二个日期是 25 03 2011 我如何找到总天数 NSDate currentdate NSDate date NSLog curretdate is
  • 基于向量键合并数据框

    我是一个绝对的初学者 希望有人能够帮助我解决合并问题 我今晚大部分时间都在解决这个问题 并且迄今为止无法成功地将解决方案应用于此特定示例的类似问题 我制作了一个虚拟数据框和向量来帮助说明我的问题 dumdata lt data frame
  • 如何将日期范围格式化为“MMM,d”?

    我正在尝试显示当前日期的周数以及周数的日期范围 现在日期范围格式是 DateTime 我想将其更改为 Jan 13 关于如何解决这个问题有什么建议吗 override func viewDidLoad super viewDidLoad l
  • Excel:从日期字符串中提取数字

    我有几个格式错误的日期列 我正在尝试将这些列转换为 月 年 和 start day 列 这是一个示例 January 13th 2018 January 13th 14th 2018 January 5th 7th 2018 January
  • 如何实现 Angular 的“盒子里的香蕉”与自定义元素的双向绑定?

    我正在尝试构建一个将由 Angular 应用程序使用的自定义元素 自定义元素将采用一个 prop 并可能对其进行操作 我的理解是我可以使用 盒子里的香蕉 来处理这个绑定 又名
  • 仅当变量为空时才分配变量

    在 Ruby 上有这样的东西 var value 基本上 这意味着 var将被分配 value 除非 var尚未分配 例如 如果 var is nil 我正在 Kotlin 上寻找相同的东西 但到目前为止 最接近的是 elvis 运算符 有
  • 为什么 Jekyll Remote_theme 的 `_config` 文件中的站点变量不可访问?

    According to this https jekyllrb com docs themes pre configuring theme gems40 Jekyll will read in a config yml at the ro
  • python -m:查找模块规范时出错

    根据 python 文档 m标志应该执行以下操作 在 sys path 中搜索指定模块并执行其内容 main module 当我简单地运行我的脚本时python命令 一切正常 由于我现在想从更高级别导入某些内容 因此我必须使用以下命令运行脚
  • Elasticsearch:在关闭数据节点之前撤出所有数据?

    有没有办法告诉节点删除其所有数据 将其分散回其他节点 以便我可以将其关闭 并且在其关闭后不处理重新平衡 重新复制 如果每个分片有 2 个副本 并且删除了一个节点 则某些分片现在只有 1 个实时副本 必须重新复制 如果可以的话 我宁愿在任何一
  • C# 文件创建 - 如何授予 IUSR DELETE?

    我有一个用 C 编写的控制台程序 它在用户 foo 下运行 该程序创建一个文件 在某些情况下 在 IUSR 下运行的 Web 应用程序需要能够删除控制台应用程序创建的文件 我想在创建文件时向 IUSR 授予 DELETE 或任何等效的操作
  • 在 Unity 2D 中拖动对象

    我正在寻找 Unity 2D 的对象拖动脚本 我在网上找到了一个很好的方法 但它似乎只能在Unity 3D中工作 这对我来说不好 因为我正在制作 2D 游戏 而且它不会以这种方式与 墙 发生碰撞 我尝试将其重写为 2D 但使用向量时遇到了错
  • -1.#IND000 在 Visual Studio 调试窗口中意味着什么?

    在Visual Studio 2010监视窗口中 我发现变量的值变成了 1 IND000 这是什么意思 IND 是 Windows 系统中 NaN Not a Number 的表示 IND 不确定形式 主要是非法运算的结果 例如除以零或无穷
  • 在 drupal 中为自定义块创建自定义模板文件

    创建自定义 tpl 文件来为自定义块设置主题的 drupal 方法是什么 具体来说 我尝试以编程方式创建一个块 然后找到一种方法将视图代码与模块 php 代码分开 如果它是一个页面 Drupal theme 将是实现这一目标的非常有效的方法
  • HRegionServer 显示“错误告诉主机我们已经启动”。显示套接字异常:参数无效

    我正在尝试在 3 台 centos 机器上创建一个 hbase 集群 Hadoop v 2 8 0 已启动并在我配置的 HBase v 1 2 5 上运行 Hbase 启动正常 它启动了 HMaster 和区域服务器 但仍然在区域服务器和
  • 各个队列是否可以有死信队列

    目前 我的 ActiveMQ 服务器中有一个名为hello world 每当消息处理失败时 ActiveMQ 都会创建一个名为的默认目录ActiveMQ DLQ 是否可以将该名称更改为类似的名称hello world DLQ 原因是我将来可
  • 将 NPM 包与 Rust 和 Webassemble 结合使用

    有没有办法在 Rust 代码中使用 npm 包和 webassemble 现在使用此模板中已存在的 webpack wasm tool wasm pack plugin 和 wasm bindgen 箱 https github com r
  • 有没有办法重定向到 register_shutdown_function 中的错误页面?

    我试图找到一种干净的方法来处理致命和关键错误 即没有输出缓冲 并且我读到在 register shutdown function 中使用 HTTP 标头是不可能的 问题是 当发生严重错误 例如 服务不可用 时 我想重定向到通用静态错误页面
  • Android Studio 创建新项目时卡住

    安装 Android Studio 并更新到 0 5 9 后 当我尝试创建一个新项目时 在浏览完所有菜单后 我卡在带有进度条的屏幕上 上面写着 正在构建 project name Gradle 项目信息 我让它在那里静置了近 10 分钟 什
  • 复制赋值运算符应该通过常量引用传递还是通过值传递?

    在 C 11 之前 复制赋值运算符始终应通过 const 引用传递 如下所示 template
  • 为什么 TTime 比较会产生意外结果?

    我观察到一些关于EncodeDateTime and EncodeTime方法 我正在寻求一些解释 procedure SomeTestCase var time TTime dateTime TDateTime begin time En