在这个范围内,没有内置的日期支持,因此您需要编写自己的代码。 以下是一个示例:http://flipbit.co.uk/2009/03/representing-large-ad-and-bc-dates-in-c.html。
如果您正在参考处理小于DateTime.MinValue的DateTime值,则我认为唯一的“共识”是不要使用System.DateTime来表示它们。任何共识可能仅存在于处理此类日期的社区内。您所在的领域是什么?天文学?无论感兴趣的领域是什么,都可能有其他人遇到了同样的问题。首先进行一些研究,特别是如果您的日期将需要与该领域中的其他软件进行交互操作。即使您必须编写自己的代码,您也可以至少了解其他人在编写自己的代码时遇到的问题。
我知道这个问题早已过时,但我在搜索中找到了它,并且可以为这个话题添加额外的见解。 在上面的评论中,有人认为日期差异将超过1年。 除非计划回到远古无法得出确切日期的时间(数千年前),否则并不是这种情况。 无论是朱利安日期还是格里高利日期所需的差异都只是几天而已,对于任何一个可以合理尝试从现有历史记录中推导出的特定日期,这种差异肯定少于3周。 为此有转换表。 我认为更大的问题来自于转换到格里高利日历。 不同的国家在不同的时间进行转换,并且由于转换的时间不同,失去的天数也不同。 如果假设今天是10月1日,明天是10月10日,则在这种情况下,转换将导致该特定国家损失9天。 另一个在稍后某个时间进行转换的国家可能损失11天、12天、13天等。 另一个大问题是尝试在特定日期确定季节。 由于不精确的日历,在赤道岁差的影响下,季节随着时间在日历年中的快速进展而进行。 今天,我们在北半球的7月份拥有夏天。 3000年前,如果我们使用朱利安日历作为标准,在这个日历月中可能会在冬季中间发生。 还要注意的是,古代世界使用了各种各样的古老日历系统。 太阳和月亮的品种都存在,并且直到大约2000年前(朱利安日历发明时)才进行了现实有效的标准化尝试。 人们经常试图将朱利安日期投射到更久远的历史中,但这些努力是不合时宜的。 由于记录的不一致性造成的不确定性,不可能确定特定事件发生在与朱利安日历相关联的特定日期上,除非采用相当大的误差范围的迂回方式。 对于发生在公元前第一千年之前的事件,这种误差可能是50或100年(在某些时期可能更多)。 我们根本没有记录来建立极端精确的时间线。 与现有记录相关的树轮顺序得出的碳约会已经帮助缩小了各个地区和时期的误差范围,但它们并不组成完全连接的记录,我们总是需要处理误差范围。
我用C#编写了一个HugeGreogorianDateTime类和两个时间跨度类来添加时间量。它基于UInt64,并使用秒作为最大分辨率,因此您可以获得相当广泛的年份范围。它处理每4年发生一次的格雷戈里闰年,使用不同长度的月份和不存在年份0。我希望这是一个完整的格雷戈里日期时间类所需的全部内容。如果不是,请在我的git中留下评论。 https://github.com/DeepSeeBee/HugeGregorianDateTime