DataTime有没处理历史上丢失的十天

MSDN上的定义:
DateTime 值类型表示值范围在公元(基督纪元)0001 年 1 月 1 日午夜 12:00:00 到公元 (C.E.) 9999 年 12 月 31 日晚上 11:59:59 之间的日期和时间


写了个例子发现1582年1月5号-1月14号在DateTime是有效的。
是把以前的日期都转成现行的历法记录规则了吗?

历史上,因为以前历法累计的误差,由教皇下令,从1582年1月5号后直接跳到1月14号号了。这十天就被称为丢失的十天。

修正公元325年宗教会议以来所积累的10日的误差,格雷果里下令:把这一年10 月4 日以后,一下子将日期跳到15日以便使第二年的春分由3月11日回复到原来的3月21日。在这一页月历上,1—4表示儒略历日期;15-31表示格里历日期,这样,历史上就留下了 10天空白! 

可能把旧历改改了。不过我计划我的万年历在1582年1月5号前用旧历。后面新历。

本来还想直接用MS的DateTime呢。只好自己写了。..

你考虑的东西太少了。。。。。。。
http://www.cnnet.com/culture/calendar/gregorian.html
如果你要考虑儒略历和格里历的转换,就要考虑你的万年历到底是使用在欧洲还是用在美洲,如果使用在美洲的某些州,就不用作这个转换。
如果用在中国,就更不用转换了。
如果要转换,参考
http://rubycn.ce-lab.net/man/addlib/Date.html

万年历并不是指一万年的日历
而是:当新皇登基要修改年号时,由专门的天文官员推算出100年内的日历,该历被称为万年历

我不清楚它为什么叫万年历,估计跟皇帝被称为“万岁”有关


>在这一页月历上,1—4表示儒略历日期;15-31表示格里历日期,这样,历史上就留下了 10天空白!
明明是两种历法,非要混在一块,笨!
仔细看看.Net的帮助,里面有关于各种历法的参数设置。

顶,偶Java版路过的

java里,直接保存日期,时间的util Date(sql Date, Timestamp)都没有保存类似信息,而在处理日历的Calendar的实现类GregorianCalendar里有public void setGregorianChange(Date date)方法,默认结果October 15, 1582开始废止儒略历,采用格利高里历。如楼上所言,假如由于圣公会的原因,英国晚开始使用公历,可以用这个来改。

仔细想象也对,只有在推算某一天之前是哪天,某天是一年的第几天,这样的日历信息的时候,才有所谓的历法区分,而计算机中用以保留某一时刻的数据结构,通常都是一个整型数值,用以从某一标准时刻开始到此计时点的经过了多少单位标准时间,这个应该与历法本身无关。

我臆测C#可能会与之类似


我看还是不要跑题。

对于楼主的问题:“DataTime有没处理历史上丢失的十天”

我是这样认为的。首先,可以肯定的是 DataTime 根本没有丢失这十天,而且这十天也是的的确确存在的。因为,楼主把两套不同的历法混用,显然是不对的。既然 DataTime 采用的是新的历法,所以你在表示旧历法的时候要相应的减去10天就可以了,其实都是那一天。

这就好比,今天阳历是2006年11月11日,而农历确是9月21日;如果我们一直都是按农历计算日期,突然明天改为用阳历计算日期,那么明天就是2006年11月12日,乍一看我们好像直接从9月21日跳到了11月12日,其实我们还是一天一天的过,谁也没多一天,谁也没少一天,生老病死的法则依然不会变!

所以说,我们都别楼主给骗了,都是些哄小孩的游戏!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值