21: def initialize(year=0, month=0, day=0, hour=0, min=0, sec=0, fraction=nil)
22: case year
23: when ::Time
24: @year, @month, @day = year.year, year.month, year.day
25: @hour, @minute, @second, @fraction = year.hour, year.min, year.sec, nil
26: @original_time = year
27: when ::Date
28: @year, @month, @day = year.year, year.month, year.day
29: @hour, @minute, @second, @fraction = 0, 0, 0, nil
30: @original_date = year
31: else
32: @year, @month, @day = year, month, day
33: @hour, @minute, @second, @fraction = hour, min, sec, fraction
34: end
35: end