[ruby-core:121462] [Ruby Bug#21199] Psych.dump and load on Date before 1582-10-15
From:
"fitmap (Justin Peal) via ruby-core" <ruby-core@...>
Date:
2025-03-28 01:12:28 UTC
List:
ruby-core #121462
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/
______________________________________________
ruby-core mailing list -- ruby-core@ml.ruby-lang.org
To unsubscribe send an email to ruby-core-leave@ml.ruby-lang.org
ruby-core info -- https://ml.ruby-lang.org/mailman3/lists/ruby-core.ml.ruby-lang.org/