# File lib/rufus/scheduler/zotime.rb, line 396
    def self.make(o)

      zt =
        case o
          when Time
            ZoTime.new(o.to_f, o.zone)
          when Date
            t =
              o.respond_to?(:to_time) ?
              o.to_time :
              Time.parse(o.strftime('%Y-%m-%d %H:%M:%S'))
            ZoTime.new(t.to_f, t.zone)
          when String
            Rufus::Scheduler.parse_in(o, :no_error => true) || self.parse(o)
          else
            o
        end

      zt = ZoTime.new(Time.now.to_f + zt, nil) if zt.is_a?(Numeric)

      fail ArgumentError.new(
        "cannot turn #{o.inspect} to a ZoTime instance"
      ) unless zt.is_a?(ZoTime)

      zt
    end