我需要在SharePoint中存储需要回溯到公元前5000年左右的日期。理想情况下,我希望能够进行日期加法/减法,如下所示:
oldDate = '5000 BC';
newDate = '1995 AD';
DateDiff(oldDate, newDate, 'Years'); // equals 6995
我该怎么办?根据字符串构建old_date类?只需使用常规日期,但添加使日期为负的AD或BC?
答案 0 :(得分:5)
这是一个非常重要的问题,实际上取决于你想要对这些日期做些什么。例如,我们只使用了自1582年以来的当前(格里高利)日历。在此之前它是朱利安日历,在此之前是一个古老的罗马日历。更糟糕的是,这些信息仅适用于西欧(以及与文化相关的区域)。因此,如果您希望通过一些简单的数学方法为历史事件提供适当的接受日期,那么您将感到非常失望。
如果你只想向后移动Gregorian calendar,我认为这是可行的。但是,仍然存在错误,并且在这个规模上它很重要。来自维基百科:
在数千年的时间尺度上, 阳历落后 四季因为减速 每天都有地球的自转 随着时间的推移略长(见潮汐 加速和闰秒)同时 这一年保持更加统一 持续时间
答案 1 :(得分:2)
如果您只对几年而不是几天感兴趣,那么您可以使用自定义编辑器构建自定义字段,并将年份值存储为整数值。
小于零的值表示BC,值大于或等于零表示AD。
答案 2 :(得分:0)
我最终将日期存储为ISO 8601格式的文本字段:
YYYY-MM-DDThh:mm:ss.sTZD
您不必存储整个字符串,例如,如果您想存储5000 BC,则应输入-5000-01-01
。我不太容易得到我的日期加法和减法,但是以我想要的格式获取数据要容易得多。