📌

[Bug #21301] Time.new に UTC が渡されると無効な日付が設定できるバグ報告

に公開

[Bug #21301] Invalid Dates Accepted When Using "UTC" in Time.new

  • Time.newUTC が指定されている場合に無効な日付を渡すことができるというバグ報告
# 4/31 は存在しない日付だが受け入れられてしまう
p Time.new(2025, 4, 31, 0, 0, 0, "UTC")
# => 2025-04-31 00:00:00 UTC
  • UTC ではなくて +00:00 を指定すると繰り上げられて 05/01 になるみたいですね
p Time.new(2025, 4, 31, 0, 0, 0, "+00:00")
# => 2025-05-01 00:00:00 +0000
  • この問題自体はまだ対応されていないんですが [Feature #21307] A way to strictly validate time input も同じような話なのでこっちと合わせて修正されたりするのかな
    • #21307 は時間の定義をより厳密に定義できるように strict: を指定できるようにする提案
Time.new(2025, 2, 29, 0, 0, 0, "+00:00", strict: true) #=> ArgumentError
GitHubで編集を提案

Discussion