TA的每日心情 | 开心 昨天 00:31 |
|---|
签到天数: 2976 天 [LV.Master]无
|
本帖最后由 heinsect 于 2015-2-1 18:13 编辑
: Z/ V+ V- J$ o7 t8 L( c
, Q9 ^7 M2 e+ y4 F8 t程序员计算日期是用儒略日的。- t, y0 j* R' |1 G; n" L2 w# t. C* Z9 |7 N
- O4 V g* t' Z0 l/ O, ]2 E6 O儒略日中的儒略和儒略历中的儒略的关系嘛,只是因为儒略日的发明人的爷爷葱白凯撒,给儿子用了大帝的名字。刚好儒略历也用了大帝的名字。
6 C( Q# D6 { v* P. X8 T2 s& E4 k6 K) t3 i3 m
单用日期的话,儒略日是从某天开始的一个日的整数。两个儒略日的差值就是相差的天数。这样想计算两个日期间的差值,计算星期几就很简单了。至于那个开始日期,儒略日的零点,用起来的时候谁也不关心,我就不讲了。
: V& Y! ?+ z* O& A1 M% A
2 K. J* f6 z! ~$ x8 o( |从格里高利历日期算儒略日(JDN)的公式是这个样子的:1 R3 B0 l+ L' U3 \1 Z
, x% W" U' l* n% @, w3 j Q( K
先要改一下年月:
$ X8 Z) d* {; l5 H![]()
( L5 i7 @2 U$ P/ w N E( q5 S! ~* S* r1 J
上面这组公式的结果呢,差不多是这个意思:
1 _, J& H3 t- H1 O& I z三月 m = 0, y=y
. N- j6 V* g" @8 q6 f6 l% q...
: t" l; v& t3 ?十二月 m=9, y=y
/ K) _4 U! O3 V一月 m = 10, y=y-1
) j1 `- d9 b& W( F @二月 m = 11, y=y-1' O; V' \4 r' s. f
1 ^/ M( l d' v% h0 O/ r
那个4800,是个计算零点,大概在公元前4801年,是和前面所说的那个零点相关的。
: f) f: c, K% ~然后计算儒略日的公式长是这个样子的:
- T5 N. p! W) e6 `( V9 E5 f9 P! J2 f( J7 j6 z( N9 m" K5 z+ y
- X9 g0 Y# H3 j6 S2 z' e
! {. R" A: T4 w; j) a( `) w
这个公式中最巧的部分是 floor((153m+2)/5), 做出的效果嘛,看这个表:
6 Z, O+ h5 G2 @- {( R+ {6 e6 JMar–Jul:31 30 31 30 31Aug–Dec:31 30 31 30 31Jan–Feb:31 28
' J( m/ U+ M8 H4 K最后面的那个系数,是相对于原点的修正值。原公式算出来的值一般太大,计算中用起来会超过32/64位字长。现在天文计算中一般会选择2000年1月1日为零点,之前有用1900年和1950年的。
7 O' H: V8 `9 \. N! n x5 h
8 I1 F' I2 R# m& Y从儒略日计算星期几,(JDN+1) mod 7 就好了。( H& q! T0 ~+ O2 N* F) V% p% R
' z* s' a: _+ `) P
这个公式是怎么来的呢? 1582年,教皇格里高利十三(XIII)发现,那一年的春分是3月11日,和儒略历里规定的日期3月21日差了十天。原因嘛,就是回归年的长度是365.2422,儒略历用的365.25。格十三用上了全部的指头,哦,应该是找了很多XX家之后,下令当年10月4日的后一天是10月15日,同时规定在原先四年一闰的基础上,100的整数倍年不是闰年,但400的整数倍年又是闰年。新的历法改名为格里高利历。! i. \2 m# O1 u( u
( i) l4 Y- v+ H- v b' A! W
为了计算转换儒略历和格里高利历,一个法国的教会学者Joseph Justus Scaliger给出了这个公式。“儒略日”中的儒略,是他老爸的名字。
1 n" d/ _+ i) e0 ~3 E3 G' P8 o% b3 E% j2 Y
哦,原来的文献中用的是儒略历日期,要算儒略日是这样的:! F# t5 a( \1 U0 Q, k* b) @
3 {: M% J. e( F2 |! S. p![]()
! g( C( k# s, v% [$ n: o; E* |
1 D. Q6 e! q6 ?从儒略日转格里高利历,也有一组公式,这里有:
/ w9 {1 `& m$ X) Z5 k' H, \ G, H3 Q) G5 A' `6 ~: D# [/ E
其实这些偏差,在儒略历启用之前是有人知道的。但是,始皇三十五年的某一天,一个罗马士兵在西西里岛上,拔出刀来,朝一个老人身上刺下去。这一刺,西方的科技文明停滞了一千多年。来自群组: 软件人家 |
评分
-
查看全部评分
|