使用Ruby 2.1,我试图找到它的倒数Time#strftime('%Y%U').例如:
s = Time.parse("2014-05-07 16:41:48 -0700").strftime('%Y%U')
# 201418
t = Time.strptime(s, '%Y%U')
# Expected: 2014-05-04 00:00:00 -0700
# Actual: 2014-01-01 00:00:00 -0800
Run Code Online (Sandbox Code Playgroud)
这个主题建议使用,%G所以我阅读了文档并尝试了它,但我得到的只是当前时间.例如:
t = Time.strptime('201418', '%G%U')
# 2014-05-13 12:07:51 -0700
Run Code Online (Sandbox Code Playgroud)
从文档中,它看起来%G只是为了与%VISO 8601同时使用%U而不是,但即使使用%G%V我回到当前时间.
那么将%Y%U字符串转换为相应字符串的正确方法是Time什么?
这可能是一个错误,因为如果您使用它似乎工作正常DateTime.
s = Time.parse("2014-05-07 16:41:48 -0700").strftime('%Y%U')
DateTime.strptime(s, "%Y%U")
#<DateTime: 2014-05-04T00:00:00+00:00 ((2456782j,0s,0n),+0s,2299161j)>
Run Code Online (Sandbox Code Playgroud)
编辑:
如果你看一下源代码,这实际上只是愚蠢的编码.正确解析年份和周数的Time.strptime呼叫Date._strptime.但是,然后Time.strptime愚蠢地只查找通常的年,月,日,小时等,并完全忽略周数.
我提交了一份错误报告.