将一周字符串解析为时间(YYYY-W#)

时间:2014-01-30 02:51:45

标签: ruby-on-rails ruby

我正在尝试解析一个字符串,该字符串表示HTML5输入的类型为“周”可能会返回到红宝石中的实际日期或时间。

输入将返回如下字符串:“2014-W05”,其中W05是一年中的第五周。

以下是我的尝试:

2.1.0dev :057 > Time.strptime("2014-W05", "%Y-W%V")
2014-01-01 00:00:00 -0800
2.1.0dev :058 > Date.strptime("2014-W05", "%Y-W%V")
2014-01-01
2.1.0dev :058 > DateTime.strptime("2014-W05", "%Y-W%V")
Wed, 01 Jan 2014 00:00:00 +0000

根据文档:http://apidock.com/ruby/DateTime/strftime

%V - 以周为基础的年份的周数(01..53)

感谢您的帮助!

1 个答案:

答案 0 :(得分:1)

在Ruby Date类(http://www.ruby-doc.org/stdlib-1.9.3/libdoc/date/rdoc/DateTime.html)中,处理周数的年份指定符应为“周年”,由%G给出。所以你想要使用:

Date.strptime("2014-W05", "%G-W%V")

所以区别在于:

2.1.0 :004 > DateTime.strptime("2014-W05", "%G-W%V")
 => #<DateTime: 2014-01-27T00:00:00+00:00 ((2456685j,0s,0n),+0s,2299161j)>

对战:

2.1.0 :003 > DateTime.strptime("2014-W05", "%Y-W%V")
 => #<DateTime: 2014-01-01T00:00:00+00:00 ((2456659j,0s,0n),+0s,2299161j)>