From: leif.eriksen.au@... Date: 2015-01-19T09:35:48+00:00 Subject: [ruby-core:67684] [ruby-trunk - Bug #10733] Time.httpdate raises ArgumentError when DateTime.now.httpdate is provided as input Issue #10733 has been updated by Leif Eriksen. defintely a regex issue, not related to DateTime or Time at all (other than them being affected the same) `def local_httpdate(date) if /\A\s* (?:Mon|Tue|Wed|Thu|Fri|Sat|Sun),\x20 (\d{2})\x20 (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\x20 (\d{4})\x20 (\d{2}):(\d{2}):(\d{2})\x20 GMT \s*\z/ix =~ date puts "regexp ok" else raise ArgumentError, "not RFC 2616 compliant date: #{date.inspect}" end end date_UTF = "Mon, 19 Jan 2015 08:43:19 GMT".encode(Encoding.find('UTF-8')) date_US_ASCII = "Mon, 19 Jan 2015 08:43:19 GMT".encode(Encoding.find('US-ASCII')) puts local_httpdate(date_UTF) # Works begin puts local_httpdate(date_US_ASCII) # => ArgumentError rescue => e p e end ` ---------------------------------------- Bug #10733: Time.httpdate raises ArgumentError when DateTime.now.httpdate is provided as input https://bugs.ruby-lang.org/issues/10733#change-51103 * Author: Maarten Claes * Status: Open * Priority: Normal * Assignee: * ruby -v: ruby 2.2.0p0 (2014-12-25 revision 49005) [x86_64-darwin14] * Backport: 2.0.0: UNKNOWN, 2.1: UNKNOWN, 2.2: UNKNOWN ---------------------------------------- An irb session demonstrating the bug: ``` irb(main):001:0> require 'time' => true irb(main):002:0> Time.httpdate("Mon, 12 Jan 2015 12:04:15 GMT") => 2015-01-12 12:04:15 UTC irb(main):003:0> DateTime.now.httpdate.to_s => "Mon, 12 Jan 2015 12:04:56 GMT" irb(main):004:0> Time.httpdate(DateTime.now.httpdate.to_s) ArgumentError: not RFC 2616 compliant date: "Mon, 12 Jan 2015 12:05:08 GMT" from /Users/mcls/.rbenv/versions/2.2.0/lib/ruby/2.2.0/time.rb:544:in `httpdate' from (irb):4 from /Users/mcls/.rbenv/versions/2.2.0/bin/irb:11:in `
' ``` To reproduce: ``` require 'time' Time.httpdate("Mon, 12 Jan 2015 12:04:15 GMT") # works Time.httpdate(DateTime.now.httpdate.to_s) # => ArgumentError ``` It seems that this only occurs on 2.2.0. (Tested on 2.1.5 and it works fine) -- https://bugs.ruby-lang.org/