# Time.rb

time.rb e\$B\$O!"e(BTime
e\$B\$r7Q>5\$7\$?:]\$K\$&\$^\$/5!G=\$7\$J\$\$\$h\$&\$K;W\$\$\$^\$9!#e(B

e\$B\$?\$H\$(\$P!"e(B

\$ cat t2.rb
require ‘time’
class Time2 < Time; end

e\$B\$H\$7\$?>l9g!"F1\$8e(B httpdate e\$B\$G\$b!"7A<0\$N0c\$\$\$K\$h\$j!"e(BTime
e\$B\$K\$J\$C\$?\$j!"e(B
Time2 e\$B\$K\$J\$C\$?\$j\$7\$^\$9!#e(B

Time2.httpdate(“Sunday, 06-Nov-94 08:49:37 GMT”).class #=> Time
Time2.httpdate(“Thu, 01 Dec 1994 16:00:00 GMT”).class #=> Time2

time.rb e\$B\$NDj5AK\BN\$G!“e(BTime
e\$B\$X\$ND>@\E*\$J;2>H\$r95\$(\$k\$3\$H\$K\$7\$?\$\$\$N\$G\$9e(B
e\$B\$,!”\$I\$&\$G\$7\$g\$&!#e(B

# Index: lib/time.rb

— lib/time.rb (revision 15003)
+++ lib/time.rb (working copy)
@@ -66,7 +66,7 @@
‘N’ => -1, ‘O’ => -2, ‘P’ => -3, ‘Q’ => -4, ‘R’ => -5, ‘S’ =>
-6,
‘T’ => -7, ‘U’ => -8, ‘V’ => -9, ‘W’ => -10, ‘X’ => -11, ‘Y’ =>
-12,
}

• def zone_offset(zone, year=Time.now.year)
• def zone_offset(zone, year=self.now.year)
off = nil
zone = zone.upcase
if /\A([±])(\d\d):?(\d\d)\z/ =~ zone
@@ -75,9 +75,9 @@
off = zone.to_i * 3600
elsif ZoneOffset.include?(zone)
off = ZoneOffset[zone] * 3600
• `````` elsif ((t = Time.local(year, 1, 1)).zone.upcase == zone rescue
``````

false)

• `````` elsif ((t = self.local(year, 1, 1)).zone.upcase == zone rescue
``````

false)
off = t.utc_offset

• `````` elsif ((t = Time.local(year, 7, 1)).zone.upcase == zone rescue
``````

false)

• `````` elsif ((t = self.local(year, 7, 1)).zone.upcase == zone rescue
``````

false)
off = t.utc_offset
end
off
@@ -177,7 +177,7 @@
if off
year, mon, day, hour, min, sec =
apply_offset(year, mon, day, hour, min, sec, off)

• ``````   t = Time.utc(year, mon, day, hour, min, sec, usec)
``````
• ``````   t = self.utc(year, mon, day, hour, min, sec, usec)
t.localtime if !zone_utc?(zone)
t
else
``````

@@ -236,7 +236,7 @@
#
# A failure for Time.parse should be checked, though.
#

• def parse(date, now=Time.now)
• def parse(date, now=self.now)
d = Date._parse(date, false)
year = d[:year]
year = yield(year) if year && block_given?
@@ -250,7 +250,7 @@

# Time.strptime(…) {|y| y < 100 ? (y >= 69 ? y + 1900 : y +

1. : y}
• def strptime(date, format, now=Time.now)
• def strptime(date, format, now=self.now)
d = Date._strptime(date, format)
raise ArgumentError, “invalid strptime format - `#{format}’”
unless d
year = d[:year]
@@ -344,7 +344,7 @@
else
year += 1900
end
• ``````   Time.utc(year, \$2, \$1.to_i, \$4.to_i, \$5.to_i, \$6.to_i)
``````
• ``````   self.utc(year, \$2, \$1.to_i, \$4.to_i, \$5.to_i, \$6.to_i)
elsif /\A\s*
(?:Mon|Tue|Wed|Thu|Fri|Sat|Sun)\x20
(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\x20
``````

@@ -389,9 +389,9 @@
zone = \$8
year, mon, day, hour, min, sec =
apply_offset(year, mon, day, hour, min, sec,
zone_offset(zone))

• ``````     Time.utc(year, mon, day, hour, min, sec, usec)
``````
• ``````     self.utc(year, mon, day, hour, min, sec, usec)
else
``````
• ``````     Time.local(year, mon, day, hour, min, sec, usec)
``````
• ``````     self.local(year, mon, day, hour, min, sec, usec)
end
else
raise ArgumentError.new("invalid date: #{date.inspect}")``````

In article [email protected],