Ruby Time.strptime vs Date.strptime

Ruby Time.strptime vs Date.strptime,ruby,Ruby,使用Time.strtime和Date.strtime解析“某些日期”(Ruby)时,它们的行为不同 例如,如果我们试图转换“2月30日”(一个不存在的日期),我们有: Time.strptime('30 Feb 2015', '%d %b %Y') # will result in this date: 2015-03-02 Date.strptime('30 Feb 2015', '%d %b %Y') # ArgumentError: invalid date 同时,试图解析“32 Fe

使用
Time.strtime
Date.strtime
解析“某些日期”(Ruby)时,它们的行为不同

例如,如果我们试图转换“2月30日”(一个不存在的日期),我们有:

Time.strptime('30 Feb 2015', '%d %b %Y') # will result in this date: 2015-03-02
Date.strptime('30 Feb 2015', '%d %b %Y') # ArgumentError: invalid date
同时,试图解析“32 Feb”会导致两个类都出错

Time.strptime('32 Feb 2015', '%d %b %Y') # ArgumentError: invalid strptime format - `%d %b %Y'
Date.strptime('32 Feb 2015', '%d %b %Y') # ArgumentError: invalid date

不同行为的原因是什么?为什么时间“试图调整”无效日期

好的,我做了更多的挖掘,发现了一些关于这个主题的“问题”:主要问题是:

时间的这种行为是有原因的。正如田中昭所说:

无效日期/时间难以确定。 应用几乎不可能,因为它取决于各种因素: 月份、闰年、夏季时间、闰秒、时区定义更改

有时应用程序需要一个接近给定年/月/日/小时/分钟/秒的时间对象

因此,
Time
尝试补偿可能的“几乎正确”的时间。这就是它成功解析以下内容的原因:
Time.strtime('2015年3月29日3:30:00+02000','%d%b%Y%T%z')

2015-03-29 04:30:00+0300(由于夏令时的原因,2015年3月29日的3:30时间无效,从3:00时钟移动到4:00)

我想是实施中的错误吧?你看过他们了吗?可能是的,但看起来他们是故意的。因为对于
Time.strtime
他们正在使用
Date.\u strtime
,但是为什么呢?