TA的每日心情 | 开心 16 小时前 |
---|
签到天数: 2809 天 [LV.Master]无
|
本帖最后由 heinsect 于 2015-2-1 18:13 编辑 , J/ R' g' i& k; U! `& l
: ~/ s4 r# f" s程序员计算日期是用儒略日的。
: ], C" B/ s8 _4 }6 }
9 L( V5 A( x* U儒略日中的儒略和儒略历中的儒略的关系嘛,只是因为儒略日的发明人的爷爷葱白凯撒,给儿子用了大帝的名字。刚好儒略历也用了大帝的名字。
2 `. _# `) `; g$ N) Q; ?" R# u$ O/ J- Q& X6 h- R0 F/ l
单用日期的话,儒略日是从某天开始的一个日的整数。两个儒略日的差值就是相差的天数。这样想计算两个日期间的差值,计算星期几就很简单了。至于那个开始日期,儒略日的零点,用起来的时候谁也不关心,我就不讲了。3 e7 H; w2 H1 x; d8 e- L
w% s" C& V, G& Y' V7 P6 M3 G从格里高利历日期算儒略日(JDN)的公式是这个样子的:: s( u9 [. |* n8 g% Z/ o4 `
2 }9 Y( L. z4 S! f2 h# ?
先要改一下年月:
; x) U3 | e) g' O$ x8 a# X![]()
1 H3 S' Z$ o% Y8 Q
, d; o7 M2 U# S9 Y1 q! _( q上面这组公式的结果呢,差不多是这个意思:7 t6 f5 G5 D* J! H. e+ U5 m: P
三月 m = 0, y=y/ ?( |$ B. l( K4 y
..." X2 w6 j( u0 ]2 A) s
十二月 m=9, y=y# w) _/ h) c' H
一月 m = 10, y=y-1
9 C) U0 r6 }4 q: s. y* T二月 m = 11, y=y-1
' ^8 P$ X2 L9 v- T/ o+ S
# g0 y y* {/ s( Q4 j1 t+ t那个4800,是个计算零点,大概在公元前4801年,是和前面所说的那个零点相关的。
/ Y7 v3 P) M# ]2 C' J: s然后计算儒略日的公式长是这个样子的:
2 b( R; Z7 X* K& Q7 Y- B2 o( S' W4 A$ D4 n
9 o3 L* s6 P x P' s$ K
3 y8 z7 t- Y1 s; i
这个公式中最巧的部分是 floor((153m+2)/5), 做出的效果嘛,看这个表:1 `' x: ?5 b+ N0 s6 _# Y" ~
Mar–Jul:31 30 31 30 31Aug–Dec:31 30 31 30 31Jan–Feb:31 28& |( L" v6 d' @8 c6 ?$ w
最后面的那个系数,是相对于原点的修正值。原公式算出来的值一般太大,计算中用起来会超过32/64位字长。现在天文计算中一般会选择2000年1月1日为零点,之前有用1900年和1950年的。
9 ^- N! ]9 j5 v6 N# c; A t
5 M: p9 V& ]; f# ^从儒略日计算星期几,(JDN+1) mod 7 就好了。
5 ~3 j0 A( l7 J/ g. B! g# ~' e: L( m% Q, g7 A* p+ W1 p( K! y9 s, d' Q P& D+ S
这个公式是怎么来的呢? 1582年,教皇格里高利十三(XIII)发现,那一年的春分是3月11日,和儒略历里规定的日期3月21日差了十天。原因嘛,就是回归年的长度是365.2422,儒略历用的365.25。格十三用上了全部的指头,哦,应该是找了很多XX家之后,下令当年10月4日的后一天是10月15日,同时规定在原先四年一闰的基础上,100的整数倍年不是闰年,但400的整数倍年又是闰年。新的历法改名为格里高利历。- s5 w6 i/ }0 |. m; B! L
3 _) m7 p9 |0 s2 E, p. r为了计算转换儒略历和格里高利历,一个法国的教会学者Joseph Justus Scaliger给出了这个公式。“儒略日”中的儒略,是他老爸的名字。8 x% `' u3 ~2 ]! p
8 J( n2 u; ?6 E/ V( C哦,原来的文献中用的是儒略历日期,要算儒略日是这样的:
- Q! q- u( \8 f* A" k, o) e/ w
; u! l% ~/ j) E% M. L6 t![]()
" W' ^ W) \# H) k% k# E9 `6 u" v1 S. ]% b
从儒略日转格里高利历,也有一组公式,这里有:
* o8 G) R0 u2 V! x K
: w1 P3 t+ Q) a* X2 B其实这些偏差,在儒略历启用之前是有人知道的。但是,始皇三十五年的某一天,一个罗马士兵在西西里岛上,拔出刀来,朝一个老人身上刺下去。这一刺,西方的科技文明停滞了一千多年。来自群组: 软件人家 |
评分
-
查看全部评分
|