为什么日期之间的减法会返回 Rational 类型?

2024-03-07

我正在尝试对日期执行减法运算。

date_sent = Date.parse("2013-01-01") #=> Tue, 01 Jan 2013
date_now = Date.today  #=> Wed, 04 Sep 2013
days = (date_now - date_sent) #=> (246/1)

为什么date_now - date_sent返回一个Rational type?


这是预期的行为。来自docs http://ruby-doc.org/stdlib-2.0.0/libdoc/date/rdoc/Date.html#method-i-2D:

d - 其他 → 日期或理性

Date.new(2001,2,3) - 1               #=> #<Date: 2001-02-02 ...>
Date.new(2001,2,3) - Date.new(2001)  #=> (33/1)

使用有理类型是因为它可以准确地表达差异:

diff = DateTime.new(2001,2,3) - DateTime.new(2001,2,2,1)
#=> (23/24)

而浮动则不能:

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

为什么日期之间的减法会返回 Rational 类型? 的相关文章

  • 如何从 Ruby 模块中仅导入几个函数?

    假设我有一个带有以下方法的模块 function1 function2 function3 我想导入 function1 和 function2 但不导入 function3 有没有办法在红宝石中做到这一点 不确定是否有一种干净的方法来添加
  • 如何在 Ruby 中使用 Safari 技术预览设置 Capybara

    我无法使用 Capybara 和 Selenium 与 Safari 技术预览版 STP 建立会话 Capybara 甚至不会打开浏览器窗口 我已升级到 Ruby 2 3 0 Capybara 2 14 2 Selenium 3 4 0我从
  • 如何使用 rspec 测试条件 ActiveRecord after_update 回调?

    我有一个触发作业的条件回调 如果经理发生变化 则应调用该方法 class Employee lt ActiveRecord Base after update employee manager on change if employee i
  • Mountain Lion 的 RVM 问题

    我可以在运行 Mountain Lion 的 Mac 上安装任何 Ruby 版本 我已经确保 Brew Doctor 一切正常 当我运行 ie rvm intall 1 9 3 head 时 我得到以下信息 From git github
  • 从外部 gem 增强模型

    我在用着炼油厂CMS http refinerycms com 在我们的网站上让较少的技术人员更新内容 在 gem 内部 它们有一个 Page 类 用于映射站点上的每个顶级页面 我想在这个 Page 类上使用acts as taggable
  • 如何在 Rails 中将随机日期时间四舍五入到小时开始?

    基本上我想获得去年内的随机日期时间 rand 1 year ago gt Sun 22 Sep 2013 18 37 44 UTC 00 00 example 但是我该如何指定或限制这个时间呢 例如 Sun 22 Sep 2013 18 0
  • 处理rails应用程序中的rack_throttle异常

    当超出速率限制时 如何处理由rack throttle gem 生成的错误 现在我只收到包含以下内容的回复 Internal Server Error undefined method each for 403 Forbidden Rate
  • 在 Ruby 1.8.7 中将带有二进制数据的 YAML 响应转换为 UTF-8

    我正在从 API 中提取响应并接收 response job unit count 1 slug Answers lc tgt ja body tgt binary 5Zue562U lc src en body src Answers j
  • 在 ruby​​ 中获取多维数组的维度

    我刚刚开始学习红宝石 现在我需要计算出多维数组的维数 我查看了所有数组方法的 ruby docs 但找不到返回维度的方法 这是一个例子 For 1 2 3 4 5 6 维数应为 2 For 1 2 2 3 3 4 5 维度应为 3 简单的
  • 在 Rails 中的帖子中添加“喜欢/不喜欢”按钮

    该网站是一个简单的社区 每个用户都会创建帖子 并且用户可能 喜欢 它们或 不喜欢 它们 我有一个 发帖 和 点赞 模型 目前 我通过 post likes size 列出了所有帖子以及每个帖子的点赞大小 喜欢帖子的按钮也可以使用 我不知道该
  • 如何在 Rails 应用程序中删除 URL 的尾部斜杠? (在 SEO 视图中)

    为了避免内容重复 我希望避免通过多个 URL 带或不带尾部斜杠 访问我的网站页面 目前 URL catalog product 1 and catalog product 1 导致同一页面 我的目标是将第二个 URL 重定向到第一个 当然是
  • 如何在自定义类上使用 ActiveModel 验证和回调?

    我正在尝试在自定义类上使用 ActiveModel 验证和回调 class TestClass include ActiveModel Validations define model callbacks validate attr acc
  • 在 ruby​​ 中卸载动态声明的类

    我有一个使用 theClass class eval 和 Object const set className theClass 定义的类 有什么办法可以删除这个类的定义吗 在测试过程中 我需要加载同一类的不同版本 Object send
  • Application.css.scss 导致 Rails 4 出现问题

    所以我一直在学习 ruby on Rails 我决定在 myrubyblog 应用程序上的新帖子页面添加一些样式 一切正常 几天后 我决定将 posts scss 文件中的 scss 导入到 application css scss 中 然
  • 为什么 Ruby 没有内置线程池?

    我有一个程序 它一次创建 10000 个线程 并同时运行 8 个线程 但是Ruby没有像Java那样内置ThreadPool 有充分的理由吗 可能是因为使用标准库 Queue 类很容易推出您自己的 q Queue new 3 times T
  • 学习树顶

    我正在尝试自学 Ruby 的 Treetop 语法生成器 我发现 对于 最好的 文档来说 不仅文档非常稀疏 而且它的工作方式似乎并不像我希望的那样直观 从高层次上来说 我真的很喜欢比现场文档或视频更好的教程 如果有的话 在较低的层面上 这是
  • 安装 gem 失败并出现权限错误[重复]

    这个问题在这里已经有答案了 我昨天将 Mac 操作系统更新至 10 9 Mavericks 我当前的 Ruby 版本显示为 ruby 2 0 0p247 2013 06 27 修订版 41674 universal x86 64 darwi
  • Ruby:邮件 gem 在邮件中的 60 个字符后添加 \r\n

    我要移植Actionmailer x509 https github com petRUShka actionmailer x509到 Rails 3 为了做到这一点 我尝试从带有签名电子邮件的大字符串创建 Mail 对象 您可以在这一行看
  • Rails 3.1 引擎迁移不起作用

    我正在创建一个带有迁移的 Rails 3 1 引擎 rake db migration 在该引擎和主机应用程序内运行良好 但我需要将此引擎包含到另一个 Rails 引擎中 第二个引擎包含用于测试的虚拟应用程序 我将这一行添加到该虚拟应用程序
  • Rails 中带有 text_field 的逗号分隔数组

    我有一些users可以有很多posts 并且每个帖子都可以有很多tags 我已经使用一个实现了拥有并属于许多帖子和标签之间的关系 创建新帖子时 用户可以使用逗号分隔的值列表对其进行标记 就像在 SO 上发布新问题时一样 如果任何标签尚不存在

随机推荐