当前位置:  开发笔记 > 编程语言 > 正文

如何在ruby中解析天/小时/分钟/秒?

如何解决《如何在ruby中解析天/小时/分钟/秒?》经验,为你挑选了3个好方法。

是否有一个宝石或其他东西来解析像"4h 30m""1d 4h"这样的字符串 - 有点像JIRA或任务规划人员的估计,也许是国际化?



1> August Lille..:

发布第二个答案,作为慢性(我的原始答案建议)不会给你时间戳而是时间戳.

这是我的解析器.

class TimeParser
  TOKENS = {
    "m" => (60),
    "h" => (60 * 60),
    "d" => (60 * 60 * 24)
  }

  attr_reader :time

  def initialize(input)
    @input = input
    @time = 0
    parse
  end

  def parse
    @input.scan(/(\d+)(\w)/).each do |amount, measure|
      @time += amount.to_i * TOKENS[measure]
    end
  end
end

战略相当简单.拆分"5h"["5", "h"],确定有多少秒"h"表示(TOKENS),并且量增加@time.

TimeParser.new("1m").time
# => 60

TimeParser.new("1m wtf lol").time
# => 60

TimeParser.new("4h 30m").time
# => 16200

TimeParser.new("1d 4h").time
# => 100800

它也不应该太难处理"1.5h",看到代码库就像它一样简单.



2> srboisvert..:

chronic_duration 做这个.



3> August Lille..:

你可以使用慢性病.它几乎可以解析你所做的一切,包括"昨天","上周"等.

更新:正如OP在评论中指出的那样,Chronic是针对日期而不是时间跨度.看到我的其他答案.

推荐阅读
手机用户2402852307
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有