【问题标题】:Convert 12-hour time to 24-hour time with a regex使用正则表达式将 12 小时时间转换为 24 小时时间
【发布时间】:2013-01-17 02:34:32
【问题描述】:

我有一堆这样格式的开放时间字符串:

Mon-Fri: AM7:00-PM8:00\nSat-Sun: AM8:00-PM6:00

我可以通过删除“AM”部分来处理它,但我想通过

转换 PM
  • 删除“PM”
  • “:”前的数字加 12
  • 注意 PM 有时是两位数(例如 PM11:00)

字符串中可以有零个或多个 PM 时间。

我不确定如何将时间作为数字来处理。我已经走到这一步了:

opening_hours.sub! /PM([\d]?[\d]):/, "***\1***"

输出如下内容:

AM7:15-***\u0001***00

'\u0001` 可能是由于字符串中的日文字符造成的。

【问题讨论】:

  • 这不能单独使用正则表达式。您只能通过使用正则表达式进行匹配来做到这一点,并提供替换功能来根据匹配的文本进行替换。

标签: ruby regex string time


【解决方案1】:

您可以利用String#gsub 接受块这一事实。这样的事情对你有用吗?

s = "Mon-Fri: AM7:00-PM8:00\nSat-Sun: AM8:00-PM11:00"

s2 = s.gsub('AM', '').gsub(/PM(\d+)/) do |match|
  (match.gsub('PM', '').to_i + 12).to_s
end

s2 # => "Mon-Fri: 7:00-20:00\nSat-Sun: 8:00-23:00"

【讨论】:

  • AM12:00PM12:00 怎么样?
  • 太好了,这很好用,谢谢! @maerics 至少在我的情况下,AM12:00 可以保持原样,并且没有 PM12:00,只有一个 PM0:00(我将手动完成)
【解决方案2】:

看看这个问题,ruby 有一个类叫datatime。

Convert 12 hr time to 24 hr format in Ruby

【讨论】:

    猜你喜欢
    • 2012-04-09
    • 2013-10-14
    • 2017-06-27
    • 2012-12-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-24
    • 1970-01-01
    相关资源
    最近更新 更多