
Issue #21199 has been updated by fitmap (Justin Peal). I suggest Psych.dump and Psych.load should deal the date as the default style Date::ITALY, like Date.new. Normal people only know Date::ITALY, which skip 1582-10-05~1582-10-14. I also suggest Date.to_s should convert inner date style to Date::ITALY, then output it. ''' require 'date' require 'psych' date1 = Date.new(1582, 10, 4) str = Psych.dump(date1, permitted_classes: [Date]) date2 = Psych.load(str, permitted_classes: [Date]) puts "date1=#{date1}, After dump and load, date2=#{date2}" ''' date1=1582-10-04, After dump and load, date2=1582-10-14 ---------------------------------------- Bug #21199: Psych.dump and load on Date before 1582-10-15 https://bugs.ruby-lang.org/issues/21199#change-112467 * Author: fitmap (Justin Peal) * Status: Feedback * ruby -v: ruby 3.2.2 (2023-03-30 revision e51014f9c0) [x64-mingw-ucrt] * Backport: 3.1: UNKNOWN, 3.2: UNKNOWN, 3.3: UNKNOWN, 3.4: UNKNOWN ---------------------------------------- The code is: ```ruby require 'date' require 'psych' date = Date.new(1582, 10, 4) p "date=#{date.inspect}" str = Psych.dump(date, permitted_classes: [Date]) p "str=#{str}" date2 = Psych.load(str, permitted_classes: [Date]) p "date2=#{date2.inspect}" ``` The output is: ``` "date=#<Date: 1582-10-04 ((2299160j,0s,0n),+0s,2299161j)>" "str=--- 1582-10-14\n" "date2=#<Date: 1582-10-14 ((2299160j,0s,0n),+0s,-Infj)>" ``` -- https://bugs.ruby-lang.org/