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 }

 

posted @ 2012-06-12 17:19  莫回头  阅读(387)  评论(0编辑  收藏  举报