2

我有一堆以这种格式显示营业时间的字符串:

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` 可能是由于字符串中的日文字符造成的。

4

2 回答 2

4

您可以利用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"
于 2013-02-01T17:52:11.273 回答
3

看看这个问题,ruby 有一个名为 datatime 的类。

在 Ruby 中将 12 小时时间转换为 24 小时格式

于 2013-02-01T17:54:24.937 回答