2

我有一个包含时间的字符串

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 值。

4

2 回答 2

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"
于 2013-07-02T18:53:08.797 回答
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”不是标准缩写。
于 2013-07-02T19:23:37.210 回答