Esempio n. 1
0
        private void showClockAndSunMoonInfo()
        {
            if (this.Cal_pause.Checked)
            {
                return;
            }
//this.timerTick.Enabled = false;   // C#: Debug
//this.Cal_pause.Checked = true;   // C#: Debug

            DateTime nowDT = DateTime.Now;

            // 显示太阳月亮坐标
            double jd = LunarHelper.NowUTCmsSince19700101(nowDT) / 86400000d - 10957.5; //J2000起算的儒略日数

//jd = 3391.31877640;   // C#: Debug
            jd += JD.deltatT2(jd);
            this.smc.calc(jd, JWdata.J, JWdata.W, 0); //传入力学时间(J2000.0起算)
            this.Cal_zb.Text = smc.toText(1);


            // 显示实时时间
            this.lblLocalClock.Text = nowDT.ToLocalTime().ToString();
            string rg = "";
            double h  = JWdata.SQTimeDifference;
            string v  = JWdata.DaylightInfo;

            jd = LunarHelper.NowUTCmsSince19700101(nowDT) / 86400000d - 10957.5 + h / 24;
            if (v.Length > 0)
            {
                double y1 = JD.Y, y2 = y1; //该时所在年份
                double m1 = double.Parse(v.Substring(0, 2)), m2 = double.Parse(v.Substring(5, 2));
                if (m2 < m1)
                {
                    y2++;
                }
                //nnweek(y,m,n,w)求y年m月第n个星期w的jd
                double J1 = JD.nnweek(y1, m1, double.Parse(v.Substring(2, 1)), double.Parse(v.Substring(3, 1))) - 0.5 - LunarHelper.J2000 + (v[4] - 97) / 24d;
                double J2 = JD.nnweek(y2, m2, double.Parse(v.Substring(7, 1)), double.Parse(v.Substring(8, 1))) - 0.5 - LunarHelper.J2000 + (v[9] - 97) / 24d;
                if (jd >= J1 && jd < J2)
                {
                    jd += 1 / 24d; rg = "¤";
                }                                                      //夏令时
            }
            JD.setFromJD(jd + LunarHelper.J2000);
            this.lblSQClock.Text = JD.D + "日 " + JD.h + ":" + JD.m + ":" + LunarHelper.int2(JD.s) + rg; //与了与clock1同步,秒数取整而不四舍五入
        }