【发布时间】:2012-01-31 08:49:56
【问题描述】:
我有像6:30 am – 2:30 pm 或5:30–11:00 pm 这样的时间间隔字符串(请注意此处省略的“pm”表示开始时间),我想将它们解析为Ruby 中的Time 对象。有没有一种优雅的方法可以做到这一点,还是我必须手动捕获所有不同的情况?
【问题讨论】:
我有像6:30 am – 2:30 pm 或5:30–11:00 pm 这样的时间间隔字符串(请注意此处省略的“pm”表示开始时间),我想将它们解析为Ruby 中的Time 对象。有没有一种优雅的方法可以做到这一点,还是我必须手动捕获所有不同的情况?
【问题讨论】:
【讨论】:
也许使用像Chronic 这样的时间库可以帮助你?
【讨论】:
感谢 Chronic 的推荐,唉,它不提供区间解析。最终使用Time.parse 并手动解析间隔。
【讨论】:
这是一个可以做到这一点的 sn-p。它将接受一个 iso8601 格式的间隔字符串(格式为 start,end),并从间隔返回您的开始和结束时间。
iso8601_interval_text = "2007-03-01T13:00:00Z/2008-05-11T15:30:00Z"
start, finish = iso8601_interval_text.split(/\//).map {|t| Time.parse(t)}
【讨论】: