RDS 年月日换算

本文介绍了一种将简化儒略日转换为年月日的算法,并详细解释了每一步转换过程。同时,还提供了从给定日期获取儒略日的函数。此算法适用于计算机科学领域的日期和时间处理。
 1         /// 从儒略日转换为年月日(如把54863转换为2009-02-01)
 2         /// </summary>
 3         /// <param name="mjdstr">简化儒略日</param>
 4         /// <returns>年-月-日</returns>
 5 #if 1
 6 void GetDateTimeByMJD(u32_t mjdstr)
 7 {
 8             //把简化儒略日转换为儒略日(MJD TO JD)
 9             double xdata JD = (double)(mjdstr) + 2400000.5;
10             double xdata Z = floor(JD + 0.5);
11             double xdata W = floor((Z - 1867216.25) / 36524.25);
12             double xdata X = floor(W / 4);
13             double xdata AA = floor(Z + 1 + W - X);
14             double xdata BB = floor(AA + 1524);
15             double xdata CC = floor((BB - 122.1) / 365.25);
16             double xdata DD = floor(365.25 * CC);
17             double xdata EE = floor((BB - DD) / 30.6001);
18             double xdata FF = floor(30.6001 * EE);
19             date.Day = BB - DD - FF;
20 //            double Month;
21 //            double Year;
22             if ((EE - 13) <= 12 && (EE - 13) > 0)
23                 date.Month = EE - 13;
24             else
25                 date.Month = EE - 1;
26             if (date.Month == 1 || date.Month == 2)
27                 date.Year = CC - 4715;
28             else
29                 date.Year = CC - 4716;
30 
31 }
32 
33   /// 从日期获得儒略日
34         /// </summary>
35         /// <param name="dt">时间</param>
36         /// <returns>简化儒略日mjd</returns>
37 u32_t GetMJd(T_DATA dt)
38 {
39  long I = dt.Year, J = dt.Month, K = dt.Day;
40  //求出给定年(I),月(J),日(K)的儒略日:
41  double jd = K - 32075 + 1461 * (I + 4800 + (J - 14) / 12) / 4 + 367 * (J - 2 - (J - 14) / 12 * 12) / 12 - 3 * ((I + 4900 + (J - 14) / 12) / 100) / 4;
42  u32_t mjdStr = (jd - 2400000.5);
43  return    mjdStr;
44 // int x = mjdStr.IndexOf(".");
45 // if (x == -1)
46 // {
47 //     return long.Parse(mjdStr);
48 // }
49 // else
50 // {
51 //     mjdStr = mjdStr.Substring(0, x);
52 //     return long.Parse(mjdStr);
53 // }
54 }

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值