Skip to content

Commit 643174d

Browse files
authored
Merge pull request #9375 from ruby/pick-ruby-core
Parse ISO8601 datetimes without Time.parse
2 parents 016ac4f + d90ea52 commit 643174d

1 file changed

Lines changed: 8 additions & 4 deletions

File tree

lib/rubygems/yaml_serializer.rb

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -271,12 +271,16 @@ def coerce(val)
271271
return Sequence.new if inner.empty?
272272
items = inner.split(/\s*,\s*/).reject(&:empty?).map {|e| Scalar.new(value: coerce(e)) }
273273
Sequence.new(items: items)
274-
elsif /^\d{4}-\d{2}-\d{2}/.match?(val)
275-
require "time"
274+
elsif /\A\d{4}-\d{2}-\d{2}([ T]\d{2}:\d{2}:\d{2})?/.match?(val)
276275
begin
277-
Time.parse(val)
276+
Time.new(val)
278277
rescue ArgumentError
279-
val
278+
# date-only format like "2024-06-15" is not supported by Time.new
279+
if /\A(\d{4})-(\d{2})-(\d{2})\z/.match(val)
280+
Time.utc($1.to_i, $2.to_i, $3.to_i)
281+
else
282+
val
283+
end
280284
end
281285
elsif /^-?\d+$/.match?(val)
282286
val.to_i

0 commit comments

Comments
 (0)