TA的每日心情 | 开心 18 小时前 |
|---|
签到天数: 2984 天 [LV.Master]无
|
本帖最后由 heinsect 于 2015-2-1 18:13 编辑
+ ~1 C* X# {, }" u% y6 P& ~! k6 u
程序员计算日期是用儒略日的。: i3 E2 q# S0 h w# w1 z% K
% g6 t1 M Y4 z9 u% V( A* v) I儒略日中的儒略和儒略历中的儒略的关系嘛,只是因为儒略日的发明人的爷爷葱白凯撒,给儿子用了大帝的名字。刚好儒略历也用了大帝的名字。
" f7 K$ A# p$ P0 w; x8 b- @) b2 C. t6 Q& N+ ^3 y' Z
单用日期的话,儒略日是从某天开始的一个日的整数。两个儒略日的差值就是相差的天数。这样想计算两个日期间的差值,计算星期几就很简单了。至于那个开始日期,儒略日的零点,用起来的时候谁也不关心,我就不讲了。
8 [1 `3 v9 `' @, o- f0 j
/ _3 \! g* u5 h6 v9 \从格里高利历日期算儒略日(JDN)的公式是这个样子的:
' I; l, u" g9 p/ {
/ Z* u3 y2 u" C& }- ~3 A/ Z- i5 N5 Q先要改一下年月:
n. |+ J" a6 J& n ) A' S. T" l0 O- R& g: H+ y6 n) z
- R1 {9 }: v N# `6 y5 j( C0 G上面这组公式的结果呢,差不多是这个意思:
6 Y: V& j3 @- P5 T% A1 _三月 m = 0, y=y
+ D9 j, M, V: T...
6 i: F% }: p5 n十二月 m=9, y=y
! l! S! {9 i9 h! e一月 m = 10, y=y-1
% Q" s1 q6 t' [6 Z" l: c$ h( |二月 m = 11, y=y-1% W' j9 X& `$ @( ]' L/ `# B- B+ {# }. X
. ?& U# Q, P* O+ I( `, g' }) h. v9 Y3 y
那个4800,是个计算零点,大概在公元前4801年,是和前面所说的那个零点相关的。% n" l1 _ l/ k4 {# p
然后计算儒略日的公式长是这个样子的:: \9 g% f; d% e/ W6 [ Q; H, t
; _+ N9 T$ \. q 8 v* a0 z+ P, | @* q0 N
, S% x. O9 B5 \9 |) |3 g- t
这个公式中最巧的部分是 floor((153m+2)/5), 做出的效果嘛,看这个表:& D! R2 g- s1 a( n) ^
Mar–Jul:31 30 31 30 31Aug–Dec:31 30 31 30 31Jan–Feb:31 28' V7 h: V% x/ t7 f7 D, O0 Q
最后面的那个系数,是相对于原点的修正值。原公式算出来的值一般太大,计算中用起来会超过32/64位字长。现在天文计算中一般会选择2000年1月1日为零点,之前有用1900年和1950年的。
. Q$ n& s" z5 @* \* s9 }: O4 d0 }' p
从儒略日计算星期几,(JDN+1) mod 7 就好了。
) f+ h- V: ?! r" B5 l
3 Z+ Y( s; h7 G0 `% `% J这个公式是怎么来的呢? 1582年,教皇格里高利十三(XIII)发现,那一年的春分是3月11日,和儒略历里规定的日期3月21日差了十天。原因嘛,就是回归年的长度是365.2422,儒略历用的365.25。格十三用上了全部的指头,哦,应该是找了很多XX家之后,下令当年10月4日的后一天是10月15日,同时规定在原先四年一闰的基础上,100的整数倍年不是闰年,但400的整数倍年又是闰年。新的历法改名为格里高利历。
$ d/ R5 s: [, w4 S
x0 m0 ?3 ^. B为了计算转换儒略历和格里高利历,一个法国的教会学者Joseph Justus Scaliger给出了这个公式。“儒略日”中的儒略,是他老爸的名字。. _) }# M9 }0 A
: ]& ?" M+ x' H6 f, V哦,原来的文献中用的是儒略历日期,要算儒略日是这样的:8 _. g, W; f, C* ~; R( ?
# \$ ^& q5 v/ Y' G8 C
7 ?* }5 {/ j1 w' ~8 a; N0 L7 D: ?
) D* G- c1 `( c* y( J1 ?/ F
从儒略日转格里高利历,也有一组公式,这里有:
' q' }' R! S T0 u
9 e' {3 s2 C1 {& Z5 v7 @: F% [其实这些偏差,在儒略历启用之前是有人知道的。但是,始皇三十五年的某一天,一个罗马士兵在西西里岛上,拔出刀来,朝一个老人身上刺下去。这一刺,西方的科技文明停滞了一千多年。来自群组: 软件人家 |
评分
-
查看全部评分
|