实施非地面日历

当我正在研究另一个问题的解决scheme时,我发现自己想知道是否可以使用.NET的Calendar类来实现不基于地球约定的日历。

例如, 火星的日子比地球上一天的时间长2.7%

到目前为止,航天器着陆器项目所使用的惯例是使用24小时“火星时钟”跟踪当地太阳时间,其中小时,分钟和秒钟比其标准(地球)持续时间长2.7%。

有没有什么好的方法来实现MarsCalendar ,使秒的长度不同于标准的GregorianCalendar ,从而能够使用基于它的所有标准AddDays()AddHours()等函数的DateTime对象? (注:理想情况下,解决scheme – 如果存在的话 – 将适用于任何forms的行星物体,可以定义长度一致的“1天”和“1年”。火星虽然是一个很好的例子,但)

在Globalization命名空间(即JapaneseCalendar )内有几个非公历日历类,它们是从System.Globalization.Calendar派生的。 你应该能够实现你自己的。 我会抽出一个样本,但Calendar类中有16个抽象方法…

你甚至可以简单地从GregorianCalendar派生你的类,并重写GetMilliseconds(DateTime)方法,返回基地的返回值乘以1.027d

答案是不。

日历强烈地是文化的产物。
在地球上甚至有几个日历
对于一些文化一天开始和结束对其他人的日出这是日落..

你可以做的是决定在一个受控的环境中的一些普遍常数作为初始的参考点,如primefaces监视是如何做到的这可以帮助你有最小的时间衡量,并且可以构build其他措施的规模,如二,小时,日等。
但是,你并不需要那个……旋转太阳的地球已经是获得同样东西的自然资源,并且不需要施工努力。它将以令人满意的精确度给出相同的结果,并且它具有大约6百万人不断追问。

火星上的date和时间是多less? 它和地球上的一样。

如果你想“爆炸”我们如何把握日历的统一性。通过理论上的每一个天体可能有它自己的当地时间…没有问题 – 但你必须承认,当地时代将不会有共同的通用共同规则,他们将是仲裁者,并与每个对象的“文化”或其他仲裁者select有关 – 意味着parsing将是地狱来计算,将不得不是每个对象。
(这并不意味着我反对这个想法本身)