🎉

[Bug #21437] 同じ日付でも年の値が巨大な場合に Date#hash の値が異なるというバグ報告

に公開

[Bug #21437] Date#hash may return different values for equal dates with large years

  • 同じ日付でも年の値が巨大な場合に Date#hash の値が異なるというバグ報告
require "date"

# こっちは同じ値になる
p Date.strptime('2024-5-9', '%Y-%m-%d').hash
#=> -1357545723973108007
p Date.strptime('2024-5-9', '%Y-%m-%d').hash
#=> -1357545723973108007

# 年が巨大な場合は異なる値になる
p Date.strptime('3171505571716611468830131104691-5-9', '%Y-%m-%d').hash
# => 3430477290328783520
p Date.strptime('3171505571716611468830131104691-5-9', '%Y-%m-%d').hash
# => -3008846236258064024
  • この不具合は開発版の Ruby 3.5-dev で修正済み
require "date"

p Date.strptime('3171505571716611468830131104691-5-9', '%Y-%m-%d').hash
# => 3430477290328783520
p Date.strptime('3171505571716611468830131104691-5-9', '%Y-%m-%d').hash
# => -3008846236258064024
GitHubで編集を提案

Discussion