使用
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
This topic建议使用%G,所以我阅读了文档并尝试了它,但我得到的只是当前时间.例如:
t = Time.strptime('201418','%G%U') # 2014-05-13 12:07:51 -0700
从文档来看,我认为%G仅适用于%V,因为它们都是ISO 8601而%U不是,但即使使用%G%V我也会回到当前时间.
解决方法
这可能是一个错误,因为如果你使用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)>
编辑:
如果你看一下源代码,这实际上只是愚蠢的编码. Time.strptime调用Date._strptime,它正确地解析年份和周数.但是,然后Time.strptime愚蠢地只查找通常的年,月,日,小时等,并完全忽略周数.
我提交了bug report.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。