def initialize(year=0, month=0, day=0, hour=0, minute=0, second=0, fraction=nil)
case year
when ::Time
@year, @month, @day = year.year, year.month, year.day
@hour, @minute, @second, @fraction = year.hour, year.min, year.sec, nil
@original_time = year
when ::Date
@year, @month, @day = year.year, year.month, year.day
@hour, @minute, @second, @fraction = 0, 0, 0, nil
@original_date = year
else
@year, @month, @day = year, month, day
@hour, @minute, @second, @fraction = hour, minute, second, fraction
end
end