【发布时间】:2014-03-23 07:11:49
【问题描述】:
当我正在寻找另一个问题的解决方案时,我发现自己想知道是否可以使用 .NET 的 Calendar 类来实现不基于地球约定的日历。
例如,Mars' day 比地球上的一天长约 2.7%:
迄今为止,航天器着陆器项目使用的惯例是使用 24 小时“火星时钟”跟踪当地太阳时,其时、分和秒比其标准(地球)持续时间长 2.7%。
有没有什么好的方法来实现MarsCalendar,使得一秒的长度不同于标准的GregorianCalendar,从而能够在所有标准AddDays() 中使用基于它的DateTime 对象、AddHours()等功能? (注意:理想情况下,一个解决方案——如果存在的话——将适用于任何形式的行星物体,它可以定义“1天”和“1年”的一致长度。火星非常适合例如)
【问题讨论】:
-
嗯,这将是我第一次看到 martians 依赖于我们的技术:P
-
应该有一个“今日最佳问题”的徽章,这应该会赢!
-
@DavidKhaykin - 一旦你完成超过一天的任务,2.7% 的转化率就会下降。小时/分钟/秒基于旋转速度,而天/月/年基于轨道速度。另一方面,
Calendar已经支持设置每年的任意天数。 -
仅供参考,它不是 C#
Calendar类。 VB.NET 或任何其他 .NET 语言都可以使用相同的类。这是 .NETCalendar类。 -
这很有趣。在跟踪火星时间的情况下,任何基于地球的日历都是毫无意义的。在地球时间,火星自转 29 小时 39 分 35 秒。一个火星年是 1.8809 个地球年。但如果火星是你的参照系,那么所有这些都是毫无意义的。你的一天只是火星绕其轴旋转一次所需的时间。把它分成方便数量的切片,你得到“小时”。除以这些,你得到分钟,除以那些,你得到秒。这些划分只是在数学上很方便,除了我们赋予它们的意义之外没有任何意义。