.net net是否有BigDateTime类型?

.net net是否有BigDateTime类型?,.net,datetime,.net,Datetime,我需要表示早于0001年1月1日的日期。你知道有一个库包含这样的类型吗 它应提供以下功能: 加减 大时间跨度 大于/小于比较 如果日期越早,数值就越不准确,这也没关系。用完全相同的问题看一看。基本上,没有内置的支持,所以您需要找到第三方实现或自己构建它。+如果您真的只需要这三个操作(意味着没有一周中的一天、一个月中的一天、时区等):只需使用从透视日期算起的秒数(或毫秒数)。 2^64秒可以给你5万亿年。公元前45年有445天,所以你需要把它加进去,然后从公元前45年切换到上一个罗马历法。公历

我需要表示早于0001年1月1日的日期。你知道有一个库包含这样的类型吗

它应提供以下功能:

  • 加减
  • 大时间跨度
  • 大于/小于比较

如果日期越早,数值就越不准确,这也没关系。

用完全相同的问题看一看。基本上,没有内置的支持,所以您需要找到第三方实现或自己构建它。

+

如果您真的只需要这三个操作(意味着没有一周中的一天、一个月中的一天、时区等):只需使用从透视日期算起的秒数(或毫秒数)。
2^64秒可以给你5万亿年。

公元前45年有445天,所以你需要把它加进去,然后从公元前45年切换到上一个罗马历法。公历的变化比你需要的晚了很多(1500年代),所以你不必担心

使用DateTime的两个主要问题是最小和最大常量。显然,作为一个结构,您也不能将其子类化

我的第一个选择是编写BigDateTime或BCDateTime结构,并通过组合在其中使用DateTime。然后,您可以设置当前日历:

CultureInfo.CurrentCulture.DateTimeFormat.Calendar = new JulianCalendar();
对于一个,但正如我提到的,只给你到公元前45年

如果年份低于45,则再次将日历切换到您自己的子类对象。如果年份为45,则需要另一个包含该年份445天的日历(他们这样做是为了在旧日历之间进行调整)

此对象的最小和最大常量是什么?文明本身的曙光

你需要选择那些,同时也要记住朱利安历法和它以前的非改革版本是专门针对罗马帝国国家的。作为一个西方人,我不知道还有其他日历存在,你会从中得到更多的信息

如果您选择执行所有文化,那么您将面临一项艰巨的任务(正如最初的.NET团队所做的那样)来实现已经存在的日历。与公元前相比,不同的历法有不同的起始年代,如伊斯兰历法、中国历法和印度历法。关于这一点的更多信息是。因此,如果你想要所有的文化,而不仅仅是罗马帝国,你需要制作你自己的版本,或者至少是其中的一些:

System.Globalization.Calendar
    System.Globalization.EastAsianLunisolarCalendar 
    System.Globalization.GregorianCalendar 
    System.Globalization.HebrewCalendar 
    System.Globalization.HijriCalendar 
    System.Globalization.JapaneseCalendar 
    System.Globalization.JulianCalendar 
    System.Globalization.KoreanCalendar 
    System.Globalization.PersianCalendar 
    System.Globalization.TaiwanCalendar 
    System.Globalization.ThaiBuddhistCalendar 
    System.Globalization.UmAlQuraCalendar

祝你好运!看看你的情况会很有趣。

你知道这方面的图书馆吗?看看链接。它包含有关如何构建类来处理此问题的信息。链接中的链接仅显示了表示公元前和公元前几年的方法。我还需要日期(可能还有时间)。要正确获取这些信息非常困难。您还需要正确的特定于区域性的信息(例如,它们什么时候从Julian更改为Gregorian calendar),也许我会尝试合并现有的DateTime和一个自定义类。我之所以要找一个第三方库,是因为它很难做到。如果你要追溯到第一年,我无法想象你需要的日期部分可以降到小时/分钟/秒。你不能只使用包装在你自己的自定义对象中的简单整数吗?我事先不知道这一天是确切的现代日期还是过去的某一年。我想避免只使用包装整数,因为很难计算时差。例如,如果我总是将一个月计算为31天,那么9月30日和10月1日的间隔将比8月31日和9月1日的间隔更远。我会考虑一下,如果日期是现代的,我可能会使用一个DATE时间。最好的解决方案将取决于在这些前黑暗时代的日期-年、月、日…中需要何种精度。。。?