gpt4 book ai didi

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

转载 作者:数据小太阳 更新时间:2023-10-29 07:30:12 37 4
gpt4 key购买 nike

使用 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字符串转换成对应的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)>

编辑:

如果您查看源代码,这实际上只是愚蠢的编码。 Time.strptime 调用 Date._strptime 正确解析年和周数。但是 Time.strptime 愚蠢地只查找通常的年、月、日、小时等,而完全忽略周数。

我提交了一个 bug report

关于ruby - Time.strptime 不解析周格式化程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23639610/

37 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com