我想分割字符串,如"12:30am"
和"6:55pm"
,并将am
/pm
与时间分开。是否有办法使用String#split
做到这一点?
或者,是否有更好的方法将该字符串转换为Time
对象?
您不需要做任何特别的事情。你所需要做的就是使用"time"
库。
require "time"
Time.parse "12:30am"
# => 2014-05-04 00:30:00 +0900
Time.parse "6:55pm"
# => 2014-05-04 18:55:00 +0900
您可以执行类似Time.parse("12:00am".gsub(/am|pm/i, ""))
的操作来删除任何这些结尾。gsub将根据/am|pm/i
正则表达式删除这些字符。管道是or和i使其不区分大小写。查看rubular以获得使用gsub或ruby中的任何正则表达式的帮助。
至于更好的时间方法,我建议您尝试gem chronic以获得更灵活、更具表现力的时间方法。以下是其文档中的一些示例。
require 'chronic'
Time.now #=> Sun Aug 27 23:18:25 PDT 2006
Chronic.parse('tomorrow')
#=> Mon Aug 28 12:00:00 PDT 2006
Chronic.parse('monday', :context => :past)
#=> Mon Aug 21 12:00:00 PDT 2006
Chronic.parse('this tuesday 5:00')
#=> Tue Aug 29 17:00:00 PDT 2006
Chronic.parse('this tuesday 5:00', :ambiguous_time_range => :none)
#=> Tue Aug 29 05:00:00 PDT 2006
Chronic.parse('may 27th', :now => Time.local(2000, 1, 1))
#=> Sat May 27 12:00:00 PDT 2000
Chronic.parse('may 27th', :guess => false)
#=> Sun May 27 00:00:00 PDT 2007..Mon May 28 00:00:00 PDT 2007
Chronic.parse('6/4/2012', :endian_precedence => :little)
#=> Fri Apr 06 00:00:00 PDT 2012
Chronic.parse('INVALID DATE')
#=> nil