【发布时间】:2020-04-23 23:53:00
【问题描述】:
我在我的数据库中为每个对象保存了一堆基于时间的字符串,格式如下:
"01:00 PM"
做了一些研究,我遇到了一个post,它向您展示了如何转换一个类似于但不完全是我的字符串的字符串。不同之处在于示例在小时和分钟整数之间没有冒号,这会在答案的转换中引发障碍:
Time.strptime("1:00 PM", "%I%P").strftime("%H:%M")
# ArgumentError (invalid strptime format - `%I%P')
鉴于我的特定格式,还有办法让这种转换工作吗?
【问题讨论】:
-
将
12:00 PM转换为12:00可能不是最好的例子。 -
不确定你的意思。
-
12存在于 12 小时制和 24 小时制中。选择01:00 PM→13:00或11:00 PM→23:00这样的例子会更明显。 -
哦,好吧,我明白了。感谢您指出了这一点。稍后我会更新。
-
请注意,您不必使用
Time方法(但如果这样做会更简单):if str.end_with?('AM'); str.sub(/ PM/,''); else; hr, min = str.scan(/\d+/).map(&:to_i); "%d:%02d" % (60*hr + min + 12*60).divmod(60); end。例如,如果str = "1:07 PM",则返回"13:07"。
标签: ruby-on-rails ruby