Module: DarianCalendar
- Defined in:
- lib/darian_calendar.rb,
lib/darian_calendar/date.rb,
lib/darian_calendar/time.rb,
lib/darian_calendar/version.rb
Overview
This Ruby library converts earth time to mars time and back again. You can choose between 5 variants of the Darian calendar system; Martiana, Defrost, Areosynchronous, Hensel and Aqua. See http://github.com/marsec/darian_calendar for more Information. It's based on the JavaScript Converter which was developed by Alan Hensel and Thomas Gangale. (http://pweb.jps.net/~tgangale/mars/converter/calendar_clock.htm)
Defined Under Namespace
Modules: CalendarTypes Classes: Date, Time
Constant Summary collapse
- MARS_TO_EARTH_DAYS =
1.027491251
- EPOCH_OFFSET =
587744.77817
- SECONDS_A_DAY =
86400.0
- ROUND_UP_SECOND =
1/SECONDS_A_DAY
- E_DAYS_TIL_UNIX =
719527.0
- SOL_NAMES =
{ martiana: ['Sol Solis', 'Sol Lunae', 'Sol Martis', 'Sol Mercurii', 'Sol Jovis', 'Sol Veneris', 'Sol Saturni'], defrost: ['Axatisol', 'Benasol', 'Ciposol', 'Domesol', 'Erjasol', 'Fulisol', 'Gavisol'], areosynchronous: ['Heliosol', 'Phobosol', 'Deimosol', 'Terrasol', 'Venusol', 'Mercurisol', 'Jovisol'] }
- MONTH_NAMES =
{ martiana: ['Sagittarius', 'Dhanus', 'Capricornus', 'Makara', 'Aquarius', 'Kumbha', 'Pisces', 'Mina', 'Aries', 'Mesha', 'Taurus', 'Rishabha', 'Gemini', 'Mithuna', 'Cancer', 'Karka', 'Leo', 'Simha', 'Virgo', 'Kanya', 'Libra', 'Tula', 'Scorpius', 'Vrishika'], defrost: ['Adir', 'Bora', 'Coan', 'Deti', 'Edal', 'Flo', 'Geor', 'Heliba', 'Idanon', 'Jowani', 'Kireal', 'Larno', 'Medior', 'Neturima', 'Ozulikan', 'Pasurabi', 'Rudiakel', 'Safundo', 'Tiunor', 'Ulasja', 'Vadeun', 'Wakumi', 'Xetual', 'Zungo'], hensel: ['Vernalis', 'Duvernalis', 'Trivernalis', 'Quadrivernalis', 'Pentavernalis', 'Hexavernalis', 'Aestas', 'Duestas', 'Triestas', 'Quadrestas', 'Pentestas', 'Hexestas', 'Autumnus', 'Duautumn', 'Triautumn', 'Quadrautumn', 'Pentautumn', 'Hexautumn', 'Unember', 'Duember', 'Triember', 'Quadrember', 'Pentember', 'Hexember'] }
- VERSION =
'1.1.0'
Class Method Summary collapse
-
.is_mars_leap_year?(year) ⇒ Boolean
Returns true if the given martian year is a leap year.
-
.now(type = CalendarTypes::MARTIANA) ⇒ DarianCalendar::Time
Returns the current mars time.
-
.sols_from_earth(earth_date_time) ⇒ Float
Returns the total number of martian sols for an earth date or time.
-
.today(type = CalendarTypes::MARTIANA) ⇒ DarianCalendar::Time
Returns the current mars time.
Class Method Details
.is_mars_leap_year?(year) ⇒ Boolean
Returns true if the given martian year is a leap year
69 70 71 72 73 74 75 76 |
# File 'lib/darian_calendar.rb', line 69 def is_mars_leap_year?(year) return false if year.nil? return true if (year % 500) == 0 return false if (year % 100) == 0 return true if (year % 10) == 0 return false if (year % 2) == 0 return true end |
.now(type = CalendarTypes::MARTIANA) ⇒ DarianCalendar::Time
Returns the current mars time. Shortcut for 'DarianCalendar::Time.now'
55 56 57 |
# File 'lib/darian_calendar.rb', line 55 def now(type=CalendarTypes::MARTIANA) DarianCalendar::Time.now(type) end |
.sols_from_earth(earth_date_time) ⇒ Float
Returns the total number of martian sols for an earth date or time
45 46 47 48 49 50 |
# File 'lib/darian_calendar.rb', line 45 def sols_from_earth(earth_date_time) seconds = earth_date_time.is_a?(::Date) ? earth_date_time.strftime("%s").to_f : earth_date_time.to_f days = (seconds / SECONDS_A_DAY) + E_DAYS_TIL_UNIX sols = (days - EPOCH_OFFSET) / MARS_TO_EARTH_DAYS return sols end |
.today(type = CalendarTypes::MARTIANA) ⇒ DarianCalendar::Time
Returns the current mars time. Shortcut for 'DarianCalendar::Time.now'
62 63 64 |
# File 'lib/darian_calendar.rb', line 62 def today(type=CalendarTypes::MARTIANA) DarianCalendar::Date.today(type) end |