加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby – Time.strptime不解析周格式化程序?

发布时间:2020-12-17 02:40:40 所属栏目:百科 来源:网络整理
导读:使用 Ruby 2.1,我试图找到Time#strftime(‘%Y%U’)的倒数.例如: s = Time.parse("2014-05-07 16:41:48 -0700").strftime('%Y%U') # 201418t = Time.strptime(s,'%Y%U') # Expected: 2014-05-04 00:00:00 -0700 # Actual: 2014-01-01 00:00:00 -0800 This
使用 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我也会回到当前时间.

那么将%Y%U字符串转换为相应时间的正确方法是什么?

解决方法

这可能是一个错误,因为如果你使用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.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读