我正在尝试解析一个字符串,该字符串表示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)
感谢您的帮助!
答案 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)>