class MailParser::RFC2822::DateTime
Attributes
day[R]
hour[R]
min[R]
month[R]
sec[R]
year[R]
zone[R]
Public Class Methods
new(year, month, day, hour, min, sec, zone_or_offset)
click to toggle source
# File lib/mailparser/rfc2822.rb, line 159 def initialize(year, month, day, hour, min, sec, zone_or_offset) y, m, d, h, mi, s = year.to_i, month.to_i, day.to_i, hour.to_i, min.to_i, sec.to_i raise ArgumentError, "invalid year" if y < 0 or 9999 < y raise ArgumentError, "invalid month" if m < 1 or 12 < m raise ArgumentError, "invalid day of the month" if d < 1 if [1,3,5,7,8,10,12].include? m raise ArgumentError, "invalid day of the month" if d > 31 elsif [4,6,9,11].include? m raise ArgumentError, "invalid day of the month" if d > 30 else # month == 2 if y%4 == 0 and (y%100 !=0 or y%400 == 0) raise ArgumentError, "invalid day of the month" if d > 29 else raise ArgumentError, "invalid day of the month" if d > 28 end end raise ArgumentError, "invalid hour" if h > 23 raise ArgumentError, "invalid minute" if mi > 59 raise ArgumentError, "invalid second" if s > 60 @year, @month, @day, @hour, @min, @sec = y, m, d, h, mi, s if zone_or_offset.is_a? Integer offset = zone_or_offset @zone_sec = offset @zone = format("%03d%02d", offset/3600, offset%3600/60).sub(/^0/, '+') return end zone = zone_or_offset if zone =~ /^[+-]\d\d(\d\d)$/ then raise ArgumentError, "invalid zone" if $1.to_i > 59 else zone = (zone && ZONE[zone.upcase]) || "-0000" end z = zone[1,4].to_i @zone = zone @zone_sec = z/100*3600 + z%100*60 @zone_sec = -@zone_sec if zone[0] == ?- end
now()
click to toggle source
# File lib/mailparser/rfc2822.rb, line 154 def self.now t = Time.now self.new(t.year, t.month, t.day, t.hour, t.min, t.sec, t.utc_offset) end
Public Instance Methods
time()
click to toggle source
# File lib/mailparser/rfc2822.rb, line 199 def time() t = Time.utc(@year, @month, @day, @hour, @min, @sec) Time.at(t.to_i - @zone_sec) end