gpt4 book ai didi

Ruby Time.strptime 与 Date.strptime

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

当使用 Time.strptimeDate.strptime 解析“某些日期”(在 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

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

最佳答案

好吧,我做了更多的挖掘,发现了几个关于这个主题的“问题”:https://bugs.ruby-lang.org/issues/9549和主要的:https://bugs.ruby-lang.org/issues/10588

Time 的这种行为似乎是有原因的。正如 Akira Tanaka 所说:

Invalid date/time is difficult to determine. It is almost impossible by application because it depends various factors: Month, leap year, summer time, leap seconds, time zone definition change.

Sometimes application needs a Time object near given year/month/day/hour/minute/second.

因此 Time 尝试补偿可能的“几乎正确”的时间。这就是它成功解析它的原因:Time.strptime('29 Mar 2015 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)

关于Ruby Time.strptime 与 Date.strptime,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31317055/

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