【问题标题】:How can I compare two times, regardless of the day, in ruby?无论何时,我如何在红宝石中比较两次?
【发布时间】:2017-04-25 00:03:46
【问题描述】:

我想检查 DateTime.now 是在一天中的某个时间之前还是之后。但我能在 Ruby 中找到的唯一时间方法是测量与 Epoch 的距离。

我想要@time = 18:00 之类的东西,如果现在是早上 7 点,那么 DateTime.now < @time 将是 true,不管是哪一天。

有人知道这是否可以在 Ruby 中完成吗?

【问题讨论】:

  • 您要比较当天的小时数还是小时数和分钟数?你想要纯红宝石还是使用导轨?
  • 欢迎来到 Stack Overflow。请阅读“How to Ask”和“minimal reproducible example”以及链接页面和“How much research effort is expected of Stack Overflow users?”。你的问题问得不好。你搜索了吗?如果不是为什么?如果是这样,它在哪里以及为什么没有帮助?你写代码了吗?如果不是,为什么?如果是这样,演示您所询问的问题所需的最少代码是多少?如果没有您的代码示例,您似乎希望我们为您编写代码。

标签: ruby-on-rails ruby datetime time


【解决方案1】:

我不确定这是否是最好的解决方案,但从我的角度来看 - 最简单。您可以将其作为字符串

进行比较
> time_now = Time.now.strftime('%H:%M')
#> "17:11"

> time_compare_with = '18:00'
> time_now < time_compare_with
#> true

【讨论】:

  • @sagarpandya82 是的,应该。只是为了形象化
  • 不确定您所说的 visualise 是什么意思?但是添加require 'time' 意味着需要标准库扩展才能使您的解决方案正常工作,但事实并非如此。 @CarySwoveland 这个解决方案在没有库扩展的普通旧 Ruby 2.4 中工作。
  • @CarySwoveland Time 是一个 stdlib 类 - 也应该在简单的 irb 中工作。我没有使用任何ActiveSupport 功能。
  • @sagarpandya82 同意你的看法
猜你喜欢
  • 2012-02-04
  • 2011-09-23
  • 1970-01-01
  • 2010-12-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-08-10
相关资源
最近更新 更多