Date.parse('3 Dogs') ArgumentError: invalid date -6ren">
gpt4 book ai didi

ruby - 为什么 "23 Dogs"在 pry 中被解析为 2015 年 11 月 23 日,但 "3 Dogs"给出解析器错误?

转载 作者:数据小太阳 更新时间:2023-10-29 06:53:47 26 4
gpt4 key购买 nike

我在 Twitter 上找到了以下代码片段(查看帖子历史以获取来源)。

[5] pry(main)> Date.parse('3 Dogs')
ArgumentError: invalid date
[6] pry(main)> Date.parse('23 Dogs')
=> Mon, 23 Nov 2015

这只是一个偷偷摸摸的彩蛋吗?如果是这样,为什么这个特定的日期和结果?如果不是彩蛋,为什么 23 Dogs 解析为日期,但 3 Dogs 不解析?

最佳答案

这与Pry无关。如果您检查 Date::parse 的文档你会看到,“如果可选的第二个参数 [comp] 为真 [默认值] 并且检测到的年份在“00”到“99”的范围内,则认为年份是两位数形成并使其充满。”。

诚然,这很奇怪。它检测到 "23""00".."30" 范围内(但不在 "3" 或任何 "0".."9"),所以它得出结论是一个日期。请注意,"31".."99" 范围内的任何值也会引发异常。我预计 "30" 是范围的高端,因为目前是 11 月,而 11 月有 30 天。然后它似乎丢弃该信息并使用当前的年份和月份,并假设日期是 "23"(或者如果 "31" 有被输入)。任何人都可以解释发生了什么的细节吗?

关于ruby - 为什么 "23 Dogs"在 pry 中被解析为 2015 年 11 月 23 日,但 "3 Dogs"给出解析器错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33879855/

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