Method: Stardate#initialize

Defined in:
lib/stardate.rb

#initialize(t = Time.now) ⇒ Stardate

Returns a new instance of Stardate.



63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
# File 'lib/stardate.rb', line 63

def initialize(t = Time.now)
  case t.class.to_s
  when "Stardate"
    @stardate = t.stardate
    return
  when "Fixnum"
    @stardate = t.to_f
    return
  when "Float"
    @stardate = t
    return
  when "DateTime"
    datetime = t.to_time.utc
  when "Time"
    datetime = t.utc
  when "ActiveSupport::TimeWithZone"
    datetime = t.utc
  when "String"
    datetime = Time.parse(t).utc
  else
    raise "Unknown conversion: #{t.class}"
  end
  y0 = datetime.year
  t0 = Time.utc(y0).to_f
  t1 = Time.utc(y0 + 1).to_f
  @stardate = y0 + (datetime.to_f - t0)/(t1 - t0)
end