public static Lunar SolarToLunar(Solar solar)
        {
            var lunar = new Lunar();
            int index = solar.solarYear - solar_1_1[0];
            int data = (solar.solarYear << 9) | (solar.solarMonth << 5) | (solar.solarDay);
            int solar11 = 0;
            if (solar_1_1[index] > data)
            {
                index--;
            }
            solar11 = solar_1_1[index];
            int y = GetBitInt(solar11, 12, 9);
            int m = GetBitInt(solar11, 4, 5);
            int d = GetBitInt(solar11, 5, 0);
            long offset = SolarToInt(solar.solarYear, solar.solarMonth, solar.solarDay) - SolarToInt(y, m, d);

            int days = lunar_month_days[index];
            int leap = GetBitInt(days, 4, 13);

            int lunarY = index + solar_1_1[0];
            int lunarM = 1;
            int lunarD = 1;
            offset += 1;

            for (int i = 0; i < 13; i++)
            {
                int dm = GetBitInt(days, 1, 12 - i) == 1 ? 30 : 29;
                if (offset > dm)
                {
                    lunarM++;
                    offset -= dm;
                }
                else
                {
                    break;
                }
            }
            lunarD = (int) (offset);
            lunar.lunarYear = lunarY;
            lunar.lunarMonth = lunarM;
            lunar.isleap = false;
            if (leap != 0 && lunarM > leap)
            {
                lunar.lunarMonth = lunarM - 1;
                if (lunarM == leap + 1)
                {
                    lunar.isleap = true;
                }
            }

            lunar.lunarDay = lunarD;
            return lunar;
        }
예제 #2
0
        public void test2()
        {
            Solar solar = new Solar(2021, 1, 15);
            Lunar lunar = solar.getLunar();

            Assert.AreEqual("雉始雊", lunar.getWuHou(), solar.toString());
        }
예제 #3
0
        public void test3()
        {
            Solar solar = new Solar(2017, 1, 5);
            Lunar lunar = solar.getLunar();

            Assert.AreEqual("先胜", lunar.getLiuYao(), lunar.toString());
        }
예제 #4
0
        public void test4()
        {
            Solar solar = new Solar(2020, 4, 10);
            Lunar lunar = solar.getLunar();

            Assert.AreEqual("田鼠化为鴽", lunar.getWuHou(), solar.toString());
        }
예제 #5
0
        public void TestSolarClock()
        {
            var        chandigarh = new double[] { 30.7333, 76.7794 };
            var        pune       = new double[] { 18.5204, 73.8567 };
            SolarClock sc         = new DateTime(2016, 4, 1).SolarClock(chandigarh[0], chandigarh[1], 5.5, true); //since this is astronomical

            Debug.WriteLine(String.Format("Sunrise would be at {0}", sc.sunrise));
            Debug.WriteLine(String.Format("Sunset would be at {0}", sc.sunset));
            Debug.WriteLine(String.Format("Total duration of the day woudl be {0}", sc.daylength));
            Debug.WriteLine(String.Format("Solar noon would be at {0}", sc.noon));
            Debug.WriteLine(String.Format("Julian day would be  {0}", sc.julian));
            Debug.WriteLine(String.Format("Solar declination would be  {0}", sc.declination));

            Debug.WriteLine("");
            Debug.WriteLine("");

            Debug.WriteLine(String.Format("We are now outputting the vedic solar clock "));

            sc = Solar.VedicShuddhi(new DateTime(2016, 4, 1).SolarClock(chandigarh[0], chandigarh[1], 5.5, false));
            Debug.WriteLine(String.Format("Sunrise would be at {0}", sc.sunrise));
            Debug.WriteLine(String.Format("Sunset would be at {0}", sc.sunset));
            Debug.WriteLine(String.Format("Total duration of the day woudl be {0}", sc.daylength));
            Debug.WriteLine(String.Format("Solar noon would be at {0}", sc.noon));
            Debug.WriteLine(String.Format("Julian day would be  {0}", sc.julian));
            Debug.WriteLine(String.Format("Solar declination would be  {0}", sc.declination));
        }
예제 #6
0
        protected void Find_FinancialPosInfo(int KhaznaId)
        {
            MySolar = new Solar();
            MySolar = db.Solar.Where(item => item.KhaznaBankID == KhaznaId).FirstOrDefault();
            if (MySolar != null)
            {
                FinancialPos.Checked = true;
                SolarRowID.Visible   = true;

                // Solar Part Info
                CarsListTxt.SelectedValue   = MySolar.CarID.ToString();
                DriverListTxt.SelectedValue = MySolar.DriverID.ToString();
                LastReadTxt.Text            = MySolar.LastReading.ToString();
                CurrentReadTxt.Text         = MySolar.CurrentReading.ToString();
                SolarTotalTxt.Text          = MySolar.Total.ToString();
                SolarQtyTxt.Text            = MySolar.SolarQty.ToString();
                AverageTxt.Text             = MySolar.Average.ToString();
                DistanceTxt.Text            = MySolar.Distance.ToString();
                Notes.InnerText             = MySolar.Notes.ToString();
                SolarTypeDrop.SelectedValue = MySolar.ServiceID.ToString();
            }
            else
            {
                AddErrorTxt.ForeColor = System.Drawing.Color.Red;
                AddErrorTxt.Text      = "حدث خطاء اثناء البحث عن حركة السولار ";
            }
        }
예제 #7
0
        public string AddSolarObject(int ID)
        {
            // علشان يعمل ابديت للقديم في حالة في قديم لو مفيش يضيف
            var oldSolarItem = new Solar();

            MySolar      = new Solar();
            oldSolarItem = db.Solar.Where(item => item.KhaznaBankID == ID).FirstOrDefault();
            if (oldSolarItem != null)
            {
                MySolar = oldSolarItem;
            }
            MySolar.CarID          = int.Parse(CarsListTxt.SelectedValue);
            MySolar.DriverID       = int.Parse(DriverListTxt.SelectedValue);
            MySolar.LastReading    = Math.Round(float.Parse(LastReadTxt.Text), 2);
            MySolar.CurrentReading = Math.Round(float.Parse(CurrentReadTxt.Text), 2);
            MySolar.Date           = DateTime.Parse(ReceivedDate.Text, CultureInfo.CreateSpecificCulture("ar-EG"));
            MySolar.Total          = decimal.Parse(SolarTotalTxt.Text);
            MySolar.SolarQty       = Math.Round(float.Parse(SolarQtyTxt.Text), 2);
            MySolar.Average        = Math.Round(float.Parse(AverageTxt.Text), 2);
            MySolar.Distance       = Math.Round(float.Parse(DistanceTxt.Text), 2);
            MySolar.Notes          = Notes.InnerText;
            MySolar.ServiceID      = int.Parse(SolarTypeDrop.SelectedValue);
            MySolar.KhaznaBankID   = ID;
            try
            {
                db.Solar.AddOrUpdate(MySolar);
                db.SaveChanges();
                return("Solar Added successfully");
            }
            catch (Exception e)
            {
                return("");
            }
        }
예제 #8
0
        public void test3()
        {
            Solar solar = new Solar(2017, 1, 5);
            Lunar lunar = solar.getLunar();

            Assert.AreEqual("雁北乡", lunar.getWuHou(), solar.toString());
        }
        public static void Verify()
        {
            DateTime endDt = cnCalendar.MaxSupportedDateTime;

            for (DateTime dt = cnCalendar.MinSupportedDateTime; dt < endDt; dt = dt.AddDays(1))
            {
                Lunar ld =
                    LunarSolarConverter.SolarToLunar(new Solar
                {
                    solarYear  = dt.Year,
                    solarMonth = dt.Month,
                    solarDay   = dt.Day
                });
                Lunar ld2 = DateTimeToLunar(dt);
                Solar sd  = LunarSolarConverter.LunarToSolar(ld2);
                if (ld.lunarYear != ld2.lunarYear || ld.lunarMonth != ld2.lunarMonth || ld.lunarDay != ld2.lunarDay ||
                    ld.isleap != ld2.isleap)
                {
                    Console.WriteLine("----" + dt.Year + "/" + dt.Month + "/" + dt.Day);
                    Console.WriteLine("ms----" + ld2.lunarYear + "/" + ld2.lunarMonth + "/" + ld2.lunarDay + "/" +
                                      ld2.isleap);
                    Console.WriteLine("ld----" + ld.lunarYear + "/" + ld.lunarMonth + "/" + ld.lunarDay + "/" +
                                      ld.isleap);
                }
                if (sd.solarYear != dt.Year || sd.solarMonth != dt.Month || sd.solarDay != dt.Day)
                {
                    Console.WriteLine("----" + dt.Year + "/" + dt.Month + "/" + dt.Day);
                    Console.WriteLine("sd----" + sd.solarYear + "/" + sd.solarMonth + "/" + sd.solarDay);
                }
            }
        }
예제 #10
0
        public static CalendarDate Build(DateTime solarDate)
        {
            var dest = new CalendarDate()
            {
                SolarDate = solarDate,
                SolarDay  = solarDate.Day
            };
            Solar solar = new Solar(solarDate);
            Lunar lunar = solar.getLunar();
            var   jieQi = lunar.getCurrentJieQi();

            if (jieQi != null)
            {
                dest.SolarTerm = jieQi.getName();
            }
            dest.LunarDay   = lunar.getDayInChinese();
            dest.LunarMonth = lunar.getMonthInChinese();
            var holidayList = HolidayUtil.getHolidaysByTarget(solarDate.Year, solarDate.Month, solarDate.Day);

            if (holidayList != null && holidayList.Count > 0)
            {
                var holidayStr = string.Join(" ", holidayList.Select(m => m.getName()));
                dest.Holiday = holidayStr;
            }


            return(dest);
        }
예제 #11
0
        public void testLiuYue()
        {
            Solar     solar = new Solar(1983, 2, 15, 20, 0, 0);
            Lunar     lunar = solar.getLunar();
            EightChar bazi  = lunar.getEightChar();
            Yun       yun   = bazi.getYun(0);

            DaYun[] daYun = yun.getDaYun();

            String[]  ganZhi  = { "甲寅", "乙卯", "丙辰", "丁巳", "戊午", "己未", "庚申", "辛酉", "壬戌", "癸亥", "甲子", "乙丑" };
            LiuNian[] liuNian = daYun[0].getLiuNian();
            LiuYue[]  l       = liuNian[0].getLiuYue();
            for (int i = 0, j = l.Length; i < j; i++)
            {
                LiuYue liuYue = l[i];
                Assert.AreEqual(ganZhi[i], liuYue.getGanZhi());
            }

            ganZhi  = new String[] { "庚寅", "辛卯", "壬辰", "癸巳", "甲午", "乙未", "丙申", "丁酉", "戊戌", "己亥", "庚子", "辛丑" };
            liuNian = daYun[4].getLiuNian();
            l       = liuNian[2].getLiuYue();
            for (int i = 0, j = l.Length; i < j; i++)
            {
                LiuYue liuYue = l[i];
                Assert.AreEqual(ganZhi[i], liuYue.getGanZhi());
            }
        }
예제 #12
0
        public void testGanZhi()
        {
            Solar     solar     = new Solar(1988, 2, 15, 23, 30, 0);
            Lunar     lunar     = solar.getLunar();
            EightChar eightChar = lunar.getEightChar();

            Assert.AreEqual("戊辰", eightChar.getYear(), "年柱");
            Assert.AreEqual("甲寅", eightChar.getMonth(), "月柱");
            Assert.AreEqual("辛丑", eightChar.getDay(), "日柱");
            Assert.AreEqual("戊子", eightChar.getTime(), "时柱");

            solar     = new Solar(1988, 2, 15, 22, 30, 0);
            lunar     = solar.getLunar();
            eightChar = lunar.getEightChar();
            Assert.AreEqual("戊辰", eightChar.getYear(), "年柱");
            Assert.AreEqual("甲寅", eightChar.getMonth(), "月柱");
            Assert.AreEqual("庚子", eightChar.getDay(), "日柱");
            Assert.AreEqual("丁亥", eightChar.getTime(), "时柱");

            solar     = new Solar(1988, 2, 2, 22, 30, 0);
            lunar     = solar.getLunar();
            eightChar = lunar.getEightChar();
            Assert.AreEqual("丁卯", eightChar.getYear(), "年柱");
            Assert.AreEqual("癸丑", eightChar.getMonth(), "月柱");
            Assert.AreEqual("丁亥", eightChar.getDay(), "日柱");
            Assert.AreEqual("辛亥", eightChar.getTime(), "时柱");
        }
예제 #13
0
        public void testXun()
        {
            Solar solar = new Solar(2020, 11, 19, 0, 0, 0);
            Lunar lunar = solar.getLunar();

            Assert.AreEqual("甲午", lunar.getYearXun());
        }
예제 #14
0
        public void test8()
        {
            Solar solar = new Solar(2020, 12, 11);
            Lunar lunar = solar.getLunar();

            Assert.AreEqual("赤口", lunar.getLiuYao(), lunar.toString());
        }
예제 #15
0
        public void test1()
        {
            Solar solar = new Solar(2020, 4, 23);
            Lunar lunar = solar.getLunar();

            Assert.AreEqual("萍始生", lunar.getWuHou(), solar.toString());
        }
예제 #16
0
        public void test4()
        {
            Solar solar = new Solar(2020, 4, 10);
            Lunar lunar = solar.getLunar();

            Assert.AreEqual("友引", lunar.getLiuYao(), lunar.toString());
        }
예제 #17
0
        public void test8()
        {
            Solar solar = new Solar(2020, 12, 11);
            Lunar lunar = solar.getLunar();

            Assert.AreEqual("鹖鴠不鸣", lunar.getWuHou(), solar.toString());
        }
예제 #18
0
        public void test6()
        {
            Solar solar = new Solar(2020, 6, 1);
            Lunar lunar = solar.getLunar();

            Assert.AreEqual("麦秋至", lunar.getWuHou(), solar.toString());
        }
예제 #19
0
        /// <summary>
        /// 起运计算
        /// </summary>
        private void computeStart()
        {
            JieQi    prev          = lunar.getPrevJie();
            JieQi    next          = lunar.getNextJie();
            Solar    current       = lunar.getSolar();
            Solar    start         = forward ? current : prev.getSolar();
            Solar    end           = forward ? next.getSolar() : current;
            int      hourDiff      = LunarUtil.getTimeZhiIndex(end.toYmdHms().Substring(11, 5)) - LunarUtil.getTimeZhiIndex(start.toYmdHms().Substring(11, 5));
            DateTime endCalendar   = new DateTime(end.getYear(), end.getMonth(), end.getDay(), 0, 0, 0, 0);
            DateTime startCalendar = new DateTime(start.getYear(), start.getMonth(), start.getDay(), 0, 0, 0, 0);
            int      dayDiff       = endCalendar.Subtract(startCalendar).Days;

            if (hourDiff < 0)
            {
                hourDiff += 12;
                dayDiff--;
            }
            int monthDiff = hourDiff * 10 / 30;
            int month     = dayDiff * 4 + monthDiff;
            int day       = hourDiff * 10 - monthDiff * 30;
            int year      = month / 12;

            month           = month - year * 12;
            this.startYear  = year;
            this.startMonth = month;
            this.startDay   = day;
        }
예제 #20
0
        public void testXiaoYun()
        {
            Solar     solar = new Solar(1983, 2, 15, 20, 0, 0);
            Lunar     lunar = solar.getLunar();
            EightChar bazi  = lunar.getEightChar();
            Yun       yun   = bazi.getYun(0);

            DaYun[] daYun = yun.getDaYun();

            int[]     years  = { 1983, 1984, 1985, 1986, 1987, 1988 };
            int[]     ages   = { 1, 2, 3, 4, 5, 6 };
            String[]  ganZhi = { "乙亥", "丙子", "丁丑", "戊寅", "己卯", "庚辰" };
            XiaoYun[] l      = daYun[0].getXiaoYun();
            for (int i = 0, j = l.Length; i < j; i++)
            {
                XiaoYun xiaoYun = l[i];
                Assert.AreEqual(years[i], xiaoYun.getYear());
                Assert.AreEqual(ages[i], xiaoYun.getAge());
                Assert.AreEqual(ganZhi[i], xiaoYun.getGanZhi());
            }

            years  = new int[] { 2029, 2030, 2031, 2032, 2033, 2034, 2035, 2036, 2037, 2038 };
            ages   = new int[] { 47, 48, 49, 50, 51, 52, 53, 54, 55, 56 };
            ganZhi = new String[] { "辛酉", "壬戌", "癸亥", "甲子", "乙丑", "丙寅", "丁卯", "戊辰", "己巳", "庚午" };
            l      = daYun[5].getXiaoYun();
            for (int i = 0, j = l.Length; i < j; i++)
            {
                XiaoYun xiaoYun = l[i];
                Assert.AreEqual(years[i], xiaoYun.getYear());
                Assert.AreEqual(ages[i], xiaoYun.getAge());
                Assert.AreEqual(ganZhi[i], xiaoYun.getGanZhi(), years[i] + "年");
            }
        }
예제 #21
0
 public override void AddRecipes()
 {
     Nebula.AddRecipes(this);
     Solar.AddRecipes(this);
     Stardust.AddRecipes(this);
     Vortex.AddRecipes(this);
 }
예제 #22
0
        public virtual Solar CreateSolar(ArchSolar obj)
        {
            Solar solar = new Solar(this, ++lastSolarID, obj);

            solars[solar.id] = solar;

            return solar;
        }
예제 #23
0
        public void test1()
        {
            Solar solar = new Solar(2020, 3, 21);

            Assert.AreEqual("白羊", solar.getXingZuo(), solar.toYmd());
            solar = new Solar(2020, 4, 19);
            Assert.AreEqual("白羊", solar.getXingZuo(), solar.toYmd());
        }
예제 #24
0
        public void test7()
        {
            Solar  solar  = new Solar(2021, 7, 5);
            Lunar  lunar  = solar.getLunar();
            ShuJiu shuJiu = lunar.getShuJiu();

            Assert.IsNull(shuJiu);
        }
예제 #25
0
        public void test12()
        {
            Solar solar = new Solar(2021, 2, 19);

            Assert.AreEqual("双鱼", solar.getXingZuo(), solar.toYmd());
            solar = new Solar(2021, 3, 20);
            Assert.AreEqual("双鱼", solar.getXingZuo(), solar.toYmd());
        }
예제 #26
0
파일: Solar.cs 프로젝트: mimusangel/LD46
 private void Awake()
 {
     if (Instance != null)
     {
         Destroy(Instance.gameObject);
     }
     Instance = this;
 }
예제 #27
0
        public void testConvert()
        {
            Solar solar = new Solar(2020, 1, 23);
            Lunar lunar = solar.getLunar();

            Assert.AreEqual("二〇一九年腊月廿九", lunar.ToString(), "com.nlf.calendar.Solar.getLunar 有错。");
            Assert.AreEqual("2020-01-23", lunar.getSolar().ToString(), "com.nlf.calendar.Lunar.getSolar 有错。");
        }
예제 #28
0
        public void testBaZiDayXunKong()
        {
            Solar     solar     = new Solar(1990, 12, 23, 8, 37, 0);
            Lunar     lunar     = solar.getLunar();
            EightChar eightChar = lunar.getEightChar();

            Assert.AreEqual("子丑", eightChar.getDayXunKong());
        }
예제 #29
0
        public void test3()
        {
            Solar solar = new Solar(2020, 5, 21);

            Assert.AreEqual("双子", solar.getXingZuo(), solar.toYmd());
            solar = new Solar(2020, 6, 21);
            Assert.AreEqual("双子", solar.getXingZuo(), solar.toYmd());
        }
예제 #30
0
        public void test2()
        {
            Solar solar = new Solar(2020, 4, 20);

            Assert.AreEqual("金牛", solar.getXingZuo(), solar.toYmd());
            solar = new Solar(2020, 5, 20);
            Assert.AreEqual("金牛", solar.getXingZuo(), solar.toYmd());
        }
예제 #31
0
        public void test4()
        {
            Solar solar = new Solar(2020, 6, 22);

            Assert.AreEqual("巨蟹", solar.getXingZuo(), solar.toYmd());
            solar = new Solar(2020, 7, 22);
            Assert.AreEqual("巨蟹", solar.getXingZuo(), solar.toYmd());
        }
예제 #32
0
        public void test11()
        {
            Solar solar = new Solar(2021, 1, 20);

            Assert.AreEqual("水瓶", solar.getXingZuo(), solar.toYmd());
            solar = new Solar(2021, 2, 18);
            Assert.AreEqual("水瓶", solar.getXingZuo(), solar.toYmd());
        }
예제 #33
0
		public void PushStatus(Solar.Status data)
		{
			if (data.Timestamp == 0)
				data.Timestamp = UnixTimeNow();
			List<object> serialized_data = this.to_list(data);
			lock (data_lock)
			{
				JsonDb db = this.DataSource.GetConnection();
				db.data.Add(serialized_data);
				++db.count;
				Debug.WriteLine("DB:\t\tPushStatus: success");
			}
		}
 public SolarControllerHuman(Solar solar)
     : base(solar)
 {
 }
 public static Solar SolarFromInt(long g)
 {
     long y = (10000*g + 14780)/3652425;
     long ddd = g - (365*y + y/4 - y/100 + y/400);
     if (ddd < 0)
     {
         y--;
         ddd = g - (365*y + y/4 - y/100 + y/400);
     }
     long mi = (100*ddd + 52)/3060;
     long mm = (mi + 2)%12 + 1;
     y = y + (mi + 2)/12;
     long dd = ddd - (mi*306 + 5)/10 + 1;
     var solar = new Solar();
     solar.solarYear = (int) y;
     solar.solarMonth = (int) mm;
     solar.solarDay = (int) dd;
     return solar;
 }
예제 #36
0
 public SolarControlPanel(Solar solar)
 {
     this.solar = solar;
 }
		public void HandleUserInput(Solar.Gear gear, Solar.Signals sigs)
		{
			// TODO
		}
예제 #38
0
 public SolarController(Solar solar)
 {
     this.solar = solar;
 }