我注意到DateTime.MinValue
默认为01-01-0001 (dd-MM-yyyy)
,因此,例如,假设我们有一个博物馆数据库/类对象,无论如何,您如何存储来自公元前10,000年的对象或者如何存储来自数百万年前的恐龙骨骼?
可以是有符号的值吗?比如,年"-10000"代表公元前?或者我们需要依赖字符串,无法本地处理第1年之前的日期?
我检查了这个问零年的问题,但它没有任何有用的见解,除了显然不是每个人都知道没有零年这样的东西。如何使用python
创建0年的datetime对象不,DateTime
在1CE之前不处理任何事情。
我的Noda Time项目确实支持BCE日期,但仍然限制在大约9998 BCE,这是它可以处理的最早日期。
一旦你在谈论史前时代,你可能有一组不同于普通日期/时间类型的用例——所以仅仅扩展现有类型的范围可能对你没有多大帮助。(举个例子,古代史上经常有相对的日期:"我知道X战役发生在Y王统治的第三年,但我不知道它们发生的确切时间。")我建议您考虑一下您的实际的用例是什么,以及您需要如何处理日期/时间信息。然后您可以查看现有的库是否满足您的需求,或者您是否需要编写自己的抽象。
在深入研究之后,我发现除了创建自己的类型之外,对于这个特定的日期用例没有简单的本地解决方案,所以我想提出我的解决方案,以防它对任何人都有用。只需添加一个列,将有一个符号,一个-和一个+(或0和1,我猜与布尔类型)。带+的日期是AC,带-的日期是BC。在你的代码上,否则你就必须处理这个符号。它很简单,不需要额外的库或技术。
由于日期没有零,符号应该不会产生干扰,只要注意负日期在逻辑中以相反顺序移动就可以解决任何问题。然而,这个解决方案只适用于9999年之前的日期,所以为了能够处理更遥远的日期,必须编写一个更复杂的系统。比如在一个单独的列中处理日期的每个部分,这样它就可以涵盖尽可能多的年份,就像int或double可以处理数字一样。
然而,我确实认为从3000年到9999年的积极日期几乎不会被使用,更不用说几百万年后的未来了。但也许它将用于科幻宇宙的粉丝项目数据库,如40K或SW或st。