我有一个包含时间的字符串
text_t = 2:00 PM ET
我试图将其解析为DateTime对象:
text_next = DateTime.strptime(text_t, '%I:%M %p %Z')
然而,当我打印出来时,它正在给我:
2013-07-02T14:00:00+00:00
根据此页面:
http://www.tutorialspoint.com/ruby/ruby_date_time.htm
应该以12小时格式给我一小时。但事实并非如此。 %H仍然给我24小时制。我需要一个12小时的时钟,并且必须能够获得AM-PM值。
答案 0 :(得分:2)
require 'date'
text_t = '2:00 PM ET'
dt = DateTime.parse(text_t)
# => #<DateTime: 2013-07-03T14:00:00+00:00 ((2456477j,50400s,0n),+0s,2299161j)>
dt.strftime('%r') # => "02:00:00 PM"
text_t = '2:12:03 PM ET'
dt = DateTime.parse(text_t)
# => #<DateTime: 2013-07-03T14:12:03+00:00 ((2456477j,51123s,0n),+0s,2299161j)>
dt.strftime('%r') # => "02:12:03 PM"
答案 1 :(得分:1)
您可以使用以下方式获取相同的格式:
require 'date'
text_t = '2:00 PM ET'
text_next = DateTime.strptime(text_t, '%I:%M %p %Z')
text_next.strftime("%-l:%M %p #{text_t.split.last}")
#=> "2:00 PM ET"
请注意strftime
:
%-l
用于获取没有任何填充的小时。text_t.split.last
用于获取原始的缩短时区,因为“ET”不是标准的消除。