Ruby 中的时间范围?

2024-02-18

我想知道某个时间是否属于schedule或其他。

就我而言,用于计算time is in 夜间时间表 or 正常时间表.

我已经找到了这个解决方案:

NIGHT = ["21:00", "06:00"]
def night?( date )
  date_str = date.strftime( "%H:%M" )
  date_str > NIGHT[0] || date_str < NIGHT[1]
end

但我认为这不是很优雅,而且只适用于这个具体情况,而不是每个时间范围.

(我发现几个类似的问题是SO但他们都提到Date范围 无Time ranges)

Updated

解决方案必须适用于随机时间范围,而不仅仅是这一具体时间范围。比方说:

"05:00"-"10:00"
"23:00"-"01:00"
"01:00"-"01:10"

这实际上或多或少是我会做的,除了可能更简洁一些:

def night?( date )
    !("06:00"..."21:00").include?(date.strftime("%H:%M"))
end

或者,如果您的日程安排边界可以保留在整点:

def night?(date)
    !((6...21).include? date.hour)
end

请注意...- 这基本上意味着“白天的时间是 6 点到 21 点,但是不包括21 点。

编辑:这是一个通用的(遗憾的是不太简洁)解决方案:

class TimeRange
    private

    def coerce(time)
        time.is_a? String and return time
        return time.strftime("%H:%M")
    end

    public

    def initialize(start,finish)
        @start = coerce(start)
        @finish = coerce(finish)
    end

    def include?(time)
        time = coerce(time)
        @start < @finish and return (@start..@finish).include?(time)
        return !(@finish..@start).include?(time)
    end
end

您几乎可以像普通范围一样使用它:

irb(main):013:0> TimeRange.new("02:00","01:00").include?(Time.mktime(2010,04,01,02,30))
=> true
irb(main):014:0> TimeRange.new("02:00","01:00").include?(Time.mktime(2010,04,01,01,30))
=> false
irb(main):015:0> TimeRange.new("01:00","02:00").include?(Time.mktime(2010,04,01,01,30))
=> true
irb(main):016:0> TimeRange.new("01:00","02:00").include?(Time.mktime(2010,04,01,02,30))
=> false

请注意,上面的类不了解时区。

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

Ruby 中的时间范围? 的相关文章

随机推荐

  • 通过调整浏览器大小来缩放 KineticJS Stage?

    最近发现了 KineticJS 因为我一直在尝试将我的 Flash 技能转换为 HTML Canvas 这是一个非常令人印象深刻的工具 问题 如果我使用像 Bootstrap 这样的前端 并且我有一个页面 其中包含几个包含 KineticJ
  • 在排序函数中处理 nils

    我不知道如何处理nils我的排序函数得到了 当我检查这个时 table sort一些电话后崩溃 if a nil then return false elseif b nil then return true end 出现此错误 用于排序的
  • SailsJS 中的 API 版本控制

    基于这个问题 我已经禁用了嵌套控制器和蓝图 我的问题是这样的 API 控制器 v1 UserController js 路线 js POST v1 user register v1 UserController createUser 策略
  • 在 Javascript for 循环声明中声明 var

    我确定我已经阅读过有关此问题的讨论 但找不到 简而言之 在循环声明内声明 for 循环的增量是否有缺点 这有什么区别 function foo for var i 0 i lt 7 i code 和这个 function foo var i
  • 如何模拟图像上传到Google App Engine Blobstore

    我正在使用 create upload url 将图像上传到 GAE blobstore uploadURL blobstore create upload url upload 为了对gae代码进行单元测试 您可以模拟图像上传吗 或者我应
  • Ehcache 与静态地图缓存实现

    我有几个表 其中的条目很少 并且它们永远不会动态更改 所以我想将整个表缓存在内存中以减少数据库的负载 我可以通过静态地图并将地图填充到静态块中轻松实现这一点 我想知道 Ehcache hibernate 是否可以以更有效的方式实现同 样的功
  • 在 data.table 中多次使用 :=

    我经常发现自己使用以下方法进行一长串链式计算 在同一个数据表上 例如 像这样的东西 test data table 1 10 1 10 1 10 1 10 test V1 V1 2 test V2 V1 V2 test V3 V2 V3 t
  • 使用 jQuery / AJAX 解码 JSON

    我正在尝试使用 jQuery 解码 JSON 这是我得到的结果 例如一个班级 这里有一个学生 Students Name John Grade 17 TotalClass 17 TotalCount 1 这就是我所做的 j ajax typ
  • 哪些 Web 框架和语言的开发时间最短?

    我正在尝试将一些网络开发想法付诸实践 不幸的是 我将是唯一的开发人员 因此我专注于获得一个良好的可调试 可测试的设置 以便我可以快速开发应用程序 您会推荐哪些语言 开发风格和框架来实现快速开发 上次我检查 RoR 是下一件大事 但那是很久以
  • 无法单独构建 Flutter Web 和 Flutter Mobile 应用

    我正在构建一个 flutter 项目 并且在将 Web 和移动代码集成到单个项目中时遇到问题 我想在我的移动代码中使用 Moor 和 Moor FFI 但即使我的 web main dart 和移动代码 main dev dart 的入口点
  • 使用 Flask-Session 扩展在 Flask 会话中未设置密钥

    现在我正在使用 Flask 第三方库Flask 会话 https flask session readthedocs io en latest 我没有运气让会议正常进行 当我连接到我的网站时 出现以下错误 运行时错误 会话不可用 因为没有密
  • 是否可以使用迭代器将向量分成 10 个组?

    I have let my vec 0 25 collect
  • g++版本兼容性

    这是一个特定的海湾合作委员会相关问题 我有一个用 g 4 1 2 编译的库 我想提供给用户 用户可以在他们的代码中使用我们的 API 并链接我们的库来创建最终的可执行文件 我的问题与 g 版本兼容性有关 我们的一些用户使用 g 4 4 3
  • 如何在同一域中托管我的 API 和 Web 应用程序?

    我有一个Rails API 和一个Web 应用程序 使用express 彼此完全分开且独立 我想知道的是 我必须单独部署它们吗 如果我这样做 我怎样才能使我的 api 处于mysite com api和网络应用程序mysite com 我见
  • 如何在 Haskell 的 TChan 上的生产者/消费者情况下限制生产者?

    我们有一些东西在 TChan 上倾销值 然后由消费者处理这些值 但消费者无法跟上 因此当生产者在通道上倾倒大量内容时 我们会使用大量内存 但消费者却无法跟上 如果通道队列达到一定大小或某种程度 是否有一种直接的方法让生产者阻塞 以便我们可以
  • Xcode 调试器将 Swift 字典报告为空(po reports {})

    当我等到 Xcode 6 1 1 在该行之后遇到断点时 let metrics leading 15 0 size 44 0 然后输入po metrics调试器报告 延迟几秒后 这似乎是错误的 po metrics count报告2 哪个是
  • Map[..] 上的 Scala map() 比 mapValues() 慢得多

    在我编写的 Scala 程序中 我有一个scala collection Map将字符串映射到一些计算值 详细来说是Map String Double immutable Map String Double Double 我知道这很丑 应该
  • 如何修复此错误:“ImportError:DLL 加载失败:找不到指定的模块。”使用 PyQt5

    我目前使用 Python 3 6 8 和 PyQt5 我的程序运行良好 但在 Windows 更新后 一切都停止运行 这是错误 Traceback most recent call last File main py line 10 in
  • 从 Zingchart 中的 CSV 数据获取系列和值

    While creating mixed chart in Zingchart we can pass the type attribute values with values array But I m not sure when re
  • Ruby 中的时间范围?

    我想知道某个时间是否属于schedule或其他 就我而言 用于计算time is in 夜间时间表 or 正常时间表 我已经找到了这个解决方案 NIGHT 21 00 06 00 def night date date str date s