title: Implementing a non-terrestrial calendar
body: <p>As I was looking into solutions for another question, I found myself wondering whether it was possible to use .NET's <a href="http://msdn.microsoft.com/en-us/library/system.globalization.calendar%28v=vs.110%29.aspx" rel="noreferrer"><code>Calendar</code></a> class to implement a calendar that wasn't based on Earthly conventions.</p>
  
  <p>For instance, <a href="http://en.wikipedia.org/wiki/Timekeeping_on_Mars" rel="noreferrer">Mars' day</a> is about 2.7% longer than a day here on Earth:</p>
  
  <blockquote>
    <p>A convention used by spacecraft lander projects to date has been to keep track of local solar time using a 24 hour "Mars clock" on which the hours, minutes and seconds are 2.7% longer than their standard (Earth) durations.</p>
  </blockquote>
  
  <p>Is there any good way to implement a <code>MarsCalendar</code> such that the length of a second is different from the standard <code>GregorianCalendar</code>, and thus be able to use <code>DateTime</code> objects based on it for all the standard <code>AddDays()</code>, <code>AddHours()</code>, etc. functions?  <sub>(Note: Ideally, a solution - if one exists - would be applicable to any form of planetary object for which it is possible to define both "1 day" and "1 year" of consistent lengths. Mars makes for a great example, though)</sub></p>