Ruby 对';2013年12月30日&x27;不正确

Ruby 对';2013年12月30日&x27;不正确,ruby,date,datetime,Ruby,Date,Datetime,DateTime#解析“2013年12月30日星期一00:00:00 UTC+00:00”本周错误。我选择了ISO 8601基于周的年份和周编号%V(基于周的年份的周编号01..53) 格式为“%V-%y”: 2013年12月30日星期一00:00:00 UTC+00:00不是“01-13” 但是如果我使用“%W”格式,结果是正确的(“52-13”) 这是什么?还是我犯了一些错误?对于基于周的周数(%V)应该使用基于周的年(%g): 对于基于周的周数(%V),应使用基于周的年(%g): cday

DateTime#解析
“2013年12月30日星期一00:00:00 UTC+00:00”
本周错误。我选择了ISO 8601基于周的年份和周编号
%V
(基于周的年份的周编号
01..53

格式为
“%V-%y”

2013年12月30日星期一00:00:00 UTC+00:00
不是
“01-13”

但是如果我使用
“%W”
格式,结果是正确的(
“52-13”


这是什么?还是我犯了一些错误?

对于基于周的周数(
%V
)应该使用基于周的年(
%g
):


对于基于周的周数(
%V
),应使用基于周的年(
%g
):


cday、cweek和cyear是基于商业日期的方法

商业:创建一个表示给定星期日期的日期对象。

因此,一年的最后几天可以与新年的开始日期在同一周。

例如,2013年12月的最后几天和2014年1月的开始日期是同一周,因此日期的周数'Mon,2013年12月30日00:00:00 UTC+00:00'在一年中的所有周完成后,将进入下一年的新一周

所以

这些是商业日期,现在检查一下

"Mon, 30 Dec 2013 00:00:00 UTC +00:00".to_date.year ==> 2013
这是正常的一年


cday、cweek和cyear是基于商业日期的方法

商业:创建一个表示给定星期日期的日期对象。

因此,一年的最后几天可以与新年的开始日期在同一周。

例如,2013年12月的最后几天和2014年1月的开始日期是同一周,因此日期的周数'Mon,2013年12月30日00:00:00 UTC+00:00'在一年中的所有周完成后,将进入下一年的新一周

所以

这些是商业日期,现在检查一下

"Mon, 30 Dec 2013 00:00:00 UTC +00:00".to_date.year ==> 2013
这是正常的一年


除了你声称有什么不对之外,我看不出有什么不对。有什么不对吗?@sawa这是不公平的,问题已经清楚地说明了,
2013年12月30日
绝对不属于2013年的第一周(第一段)。mudasobwa是对的<代码>2013年12月30日
在ISO 8601年的第一周,在2013年的常规年份,但不在2013年常规年份的第一周。但这与OP声称解析错误无关。解析实际上并没有错。但我想你明白发生了什么。除了你声称有什么不对劲之外,我看不出有什么不对劲。有什么不对吗?@sawa这是不公平的,问题已经清楚地说明了,
2013年12月30日
绝对不属于2013年的第一周(第一段)。mudasobwa是对的<代码>2013年12月30日在ISO 8601年的第一周,在2013年的常规年份,但不在2013年常规年份的第一周。但这与OP声称解析错误无关。解析实际上并没有错。但我想你知道发生了什么。
"Mon, 30 Dec 2013 00:00:00 UTC +00:00".to_date.cweek ==> 1
"Mon, 30 Dec 2013 00:00:00 UTC +00:00".to_date.cwday ==>1 (1st week day of week 1 2014(but date is still of  2013)
"Mon, 30 Dec 2013 00:00:00 UTC +00:00".to_date.cwyear ==> 2014
"Mon, 30 Dec 2013 00:00:00 UTC +00:00".to_date.year ==> 2013