为什么以下不会抛出错误并返回59秒?
# 2016-02-02T16:05:59+00:00
DateTime.strptime('02-02-2016 04:05:60 PM', '%d-%m-%Y %I:%M:%S %p')
我使用Ruby 2.2.1运行Mac OS X El Capitan 10.11.3。
答案 0 :(得分:1)
原因是由于strptime
在较低级别实施which is what the documentation references.
%S
第二个(0-60; 60可能发生闰秒;之前也允许61个。)
可能或可能在那个时刻不是,所以图书馆允许你传入60.它&如果需要添加闰秒,那就足够聪明了。
答案 1 :(得分:-1)
我认为这是因为与2月29日不同,它存在时是可预测的,当它不存在时,第二个60的存在是不规则的,并且只提前约六个月决定,因此编码是不切实际/不可能的在图书馆(特别是未来)。因此,通常允许它,并且根据其评估点处可用的信息将其近似为最接近的秒。您不希望相同的参数字符串返回错误,具体取决于它的评估时间。