コード例 #1
1
        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 static Solar LunarToSolar(Lunar lunar)
        {
            int days = lunar_month_days[lunar.lunarYear - lunar_month_days[0]];
            int leap = GetBitInt(days, 4, 13);
            int offset = 0;
            int loopend = leap;
            if (!lunar.isleap)
            {
                if (lunar.lunarMonth <= leap || leap == 0)
                {
                    loopend = lunar.lunarMonth - 1;
                }
                else
                {
                    loopend = lunar.lunarMonth;
                }
            }
            for (int i = 0; i < loopend; i++)
            {
                offset += GetBitInt(days, 1, 12 - i) == 1 ? 30 : 29;
            }
            offset += lunar.lunarDay;

            int solar11 = solar_1_1[lunar.lunarYear - solar_1_1[0]];

            int y = GetBitInt(solar11, 12, 9);
            int m = GetBitInt(solar11, 4, 5);
            int d = GetBitInt(solar11, 5, 0);

            return SolarFromInt(SolarToInt(y, m, d) + offset - 1);
        }
コード例 #3
0
ファイル: FuTest.cs プロジェクト: llorch19/lunar-csharp
        public void test8()
        {
            Solar solar = new Solar(2011, 8, 23);
            Lunar lunar = solar.getLunar();
            Fu    fu    = lunar.getFu();

            Assert.IsNull(fu);
        }
コード例 #4
0
ファイル: LunaTest.cs プロジェクト: maiernte/huahebase
        public void Luna对象Test()
        {
            Lunar lunar = new Lunar();

            lunar.yueLiCalc(2017, 1);
            Assert.AreEqual(31, lunar.lun.Count);
            Assert.AreEqual(1, lunar.m);
            Assert.AreEqual(2017, lunar.y);
        }
コード例 #5
0
ファイル: ShuJiuTest.cs プロジェクト: llorch19/lunar-csharp
        public void test3()
        {
            Solar  solar  = new Solar(2020, 1, 7);
            Lunar  lunar  = solar.getLunar();
            ShuJiu shuJiu = lunar.getShuJiu();

            Assert.AreEqual("二九", shuJiu.toString(), solar.toYmd());
            Assert.AreEqual("二九第8天", shuJiu.toFullString(), solar.toYmd());
        }
コード例 #6
0
ファイル: ShuJiuTest.cs プロジェクト: llorch19/lunar-csharp
        public void test2()
        {
            Solar  solar  = new Solar(2020, 12, 22);
            Lunar  lunar  = solar.getLunar();
            ShuJiu shuJiu = lunar.getShuJiu();

            Assert.AreEqual("一九", shuJiu.toString(), solar.toYmd());
            Assert.AreEqual("一九第2天", shuJiu.toFullString(), solar.toYmd());
        }
コード例 #7
0
ファイル: ShuJiuTest.cs プロジェクト: llorch19/lunar-csharp
        public void test6()
        {
            Solar  solar  = new Solar(2021, 3, 5);
            Lunar  lunar  = solar.getLunar();
            ShuJiu shuJiu = lunar.getShuJiu();

            Assert.AreEqual("九九", shuJiu.toString(), solar.toYmd());
            Assert.AreEqual("九九第3天", shuJiu.toFullString(), solar.toYmd());
        }
コード例 #8
0
ファイル: ShuJiuTest.cs プロジェクト: llorch19/lunar-csharp
        public void test5()
        {
            Solar  solar  = new Solar(2021, 1, 8);
            Lunar  lunar  = solar.getLunar();
            ShuJiu shuJiu = lunar.getShuJiu();

            Assert.AreEqual("三九", shuJiu.toString(), solar.toYmd());
            Assert.AreEqual("三九第1天", shuJiu.toFullString(), solar.toYmd());
        }
コード例 #9
0
ファイル: XiaoYun.cs プロジェクト: zhangshourui/lunar-csharp
 public XiaoYun(DaYun daYun, int index, bool forward)
 {
     this.daYun   = daYun;
     this.lunar   = daYun.getLunar();
     this.index   = index;
     this.year    = daYun.getStartYear() + index;
     this.age     = daYun.getStartAge() + index;
     this.forward = forward;
 }
コード例 #10
0
        /* we should allocate object on a separate stack */
        private WeakReference RegisterDummyDelegate(string name)
        {
            Dummy         dummy     = new Dummy();
            WeakReference reference = new WeakReference(new CommandAction <string[]>(dummy.Execute));

            Lunar.RegisterCommand(name, dummy.Execute);

            return(reference);
        }
コード例 #11
0
 internal static void Break()
 {
     Debug.Break();
     Lunar.RegisterCommand("continue", delegate()
     {
         CRegistery.Unregister("continue");
         EditorApplication.ExecuteMenuItem("Edit/Pause");
     });
 }
コード例 #12
0
ファイル: FuTest.cs プロジェクト: llorch19/lunar-csharp
        public void test3()
        {
            Solar solar = new Solar(2011, 7, 24);
            Lunar lunar = solar.getLunar();
            Fu    fu    = lunar.getFu();

            Assert.AreEqual("中伏", fu.toString(), solar.toYmd());
            Assert.AreEqual("中伏第1天", fu.toFullString(), solar.toYmd());
        }
コード例 #13
0
ファイル: FuTest.cs プロジェクト: llorch19/lunar-csharp
        public void test14()
        {
            Solar solar = new Solar(2020, 8, 24);
            Lunar lunar = solar.getLunar();
            Fu    fu    = lunar.getFu();

            Assert.AreEqual("末伏", fu.toString(), solar.toYmd());
            Assert.AreEqual("末伏第10天", fu.toFullString(), solar.toYmd());
        }
コード例 #14
0
ファイル: XunTest.cs プロジェクト: zhangshourui/lunar-csharp
        public void testXunKong1()
        {
            Solar solar = new Solar(2020, 11, 19, 0, 0, 0);
            Lunar lunar = solar.getLunar();

            Assert.AreEqual("辰巳", lunar.getYearXunKong());
            Assert.AreEqual("午未", lunar.getMonthXunKong());
            Assert.AreEqual("戌亥", lunar.getDayXunKong());
        }
コード例 #15
0
        public void testQiYun()
        {
            Solar     solar = new Solar(1983, 2, 15, 20, 0, 0);
            Lunar     lunar = solar.getLunar();
            EightChar bazi  = lunar.getEightChar();
            Yun       yun   = bazi.getYun(0);

            Assert.AreEqual(6, yun.getStartYear());
            Assert.AreEqual(2, yun.getStartMonth());
            Assert.AreEqual(20, yun.getStartDay());
            Assert.AreEqual("1989-05-05", yun.getStartSolar().toYmd());

            solar = new Solar(2013, 7, 13, 16, 17, 0);
            lunar = solar.getLunar();
            bazi  = lunar.getEightChar();
            yun   = bazi.getYun(0);
            Assert.AreEqual(8, yun.getStartYear());
            Assert.AreEqual(4, yun.getStartMonth());
            Assert.AreEqual(0, yun.getStartDay());
            Assert.AreEqual("2021-11-13", yun.getStartSolar().toYmd());

            solar = new Solar(2020, 8, 18, 10, 0, 0);
            lunar = solar.getLunar();
            bazi  = lunar.getEightChar();
            yun   = bazi.getYun(0);
            Assert.AreEqual(3, yun.getStartYear());
            Assert.AreEqual(8, yun.getStartMonth());
            Assert.AreEqual(0, yun.getStartDay());
            Assert.AreEqual("2024-04-18", yun.getStartSolar().toYmd());

            solar = new Solar(1972, 6, 15, 0, 0, 0);
            lunar = solar.getLunar();
            bazi  = lunar.getEightChar();
            yun   = bazi.getYun(1);
            Assert.AreEqual(7, yun.getStartYear());
            Assert.AreEqual(5, yun.getStartMonth());
            Assert.AreEqual(10, yun.getStartDay());
            Assert.AreEqual("1979-11-25", yun.getStartSolar().toYmd());

            solar = new Solar(1968, 11, 22, 0, 0, 0);
            lunar = solar.getLunar();
            bazi  = lunar.getEightChar();
            yun   = bazi.getYun(1);
            Assert.AreEqual(5, yun.getStartYear());
            Assert.AreEqual(1, yun.getStartMonth());
            Assert.AreEqual(20, yun.getStartDay());
            Assert.AreEqual("1974-01-11", yun.getStartSolar().toYmd());

            solar = new Solar(1968, 11, 23, 0, 0, 0);
            lunar = solar.getLunar();
            bazi  = lunar.getEightChar();
            yun   = bazi.getYun(1);
            Assert.AreEqual(4, yun.getStartYear());
            Assert.AreEqual(9, yun.getStartMonth());
            Assert.AreEqual(20, yun.getStartDay());
            Assert.AreEqual("1973-09-12", yun.getStartSolar().toYmd());
        }
コード例 #16
0
ファイル: FuTest.cs プロジェクト: llorch19/lunar-csharp
        public void test12()
        {
            Solar solar = new Solar(2020, 7, 17);
            Lunar lunar = solar.getLunar();
            Fu    fu    = lunar.getFu();

            Assert.AreEqual("初伏", fu.toString(), solar.toYmd());
            Assert.AreEqual("初伏第2天", fu.toFullString(), solar.toYmd());
        }
コード例 #17
0
        public void TestDelegateActionCommand()
        {
            Lunar.RegisterCommand("action", (string[] args) =>
            {
                AddResult("action: {0}", CStringUtils.Join(args, ", "));
            });

            Execute("action arg1 arg2 arg3");
            AssertResult("action: arg1, arg2, arg3");
        }
コード例 #18
0
        public void TestBool3()
        {
            Lunar.RegisterCommand("action", (bool[] args) =>
            {
                AddResult("action " + CStringUtils.Join(args, " "));
            });

            Execute("action 1 0 1");
            AssertResult("action True False True");
        }
コード例 #19
0
        public void TestFloat3()
        {
            Lunar.RegisterCommand("action", (float[] args) =>
            {
                AddResult("action " + CStringUtils.Join(args, " "));
            });

            Execute("action 3.14 3.15 3.16");
            AssertResult("action 3.14 3.15 3.16");
        }
コード例 #20
0
        public void TestInts3()
        {
            Lunar.RegisterCommand("action", (int[] args) =>
            {
                AddResult("action " + CStringUtils.Join(args, " "));
            });

            Execute("action 10 20 30");
            AssertResult("action 10 20 30");
        }
コード例 #21
0
        public void TestStrings3()
        {
            Lunar.RegisterCommand("action", (string[] args) =>
            {
                AddResult("action " + CStringUtils.Join(args, " "));
            });

            Execute("action arg1 arg2 arg3");
            AssertResult("action arg1 arg2 arg3");
        }
コード例 #22
0
        public void TestVector4()
        {
            Lunar.RegisterCommand("action", (Vector4 arg) =>
            {
                AddResult("action " + arg);
            });

            Execute("action 1.0 2.0 3.0 4.0");
            AssertResult("action (1.0, 2.0, 3.0, 4.0)");
        }
コード例 #23
0
        public void TestStringArg3()
        {
            Lunar.RegisterCommand("action", (string arg1, string arg2, string arg3) =>
            {
                AddResult("action " + arg1 + " " + arg2 + " " + arg3);
            });

            Execute("action arg1 arg2 arg3");
            AssertResult("action arg1 arg2 arg3");
        }
コード例 #24
0
        public void TestDelegateAction()
        {
            Lunar.RegisterCommand("action", () =>
            {
                AddResult("action");
            });

            Execute("action");
            AssertResult("action");
        }
コード例 #25
0
        public void TestStringArg()
        {
            Lunar.RegisterCommand("action", (string arg) =>
            {
                AddResult("action " + arg);
            });

            Execute("action arg1");
            AssertResult("action arg1");
        }
コード例 #26
0
        public void TestFloatArg3()
        {
            Lunar.RegisterCommand("action", (float arg1, float arg2, float arg3) =>
            {
                AddResult("action " + arg1 + " " + arg2 + " " + arg3);
            });

            Execute("action 3.14 3.15 3.16");
            AssertResult("action 3.14 3.15 3.16");
        }
コード例 #27
0
        public void TestFloatArg()
        {
            Lunar.RegisterCommand("action", (float arg) =>
            {
                AddResult("action " + arg);
            });

            Execute("action 3.14");
            AssertResult("action 3.14");
        }
コード例 #28
0
        public void TestIntArg3()
        {
            Lunar.RegisterCommand("action", (int arg1, int arg2, int arg3) =>
            {
                AddResult("action " + arg1 + " " + arg2 + " " + arg3);
            });

            Execute("action 10 20 30");
            AssertResult("action 10 20 30");
        }
コード例 #29
0
        public void TestIntArg()
        {
            Lunar.RegisterCommand("action", (int arg) =>
            {
                AddResult("action " + arg);
            });

            Execute("action 10");
            AssertResult("action 10");
        }
コード例 #30
0
        public void TestWrongNumberOfArgs()
        {
            Lunar.RegisterCommand("action", () =>
            {
                Assert.Fail("Command should not get executed");
            });

            Execute("action arg", false);
            AssertResult("  Wrong number of arguments", "  usage: action");
        }
コード例 #31
0
        public void TestWrongNumberOfArgs3()
        {
            Lunar.RegisterCommand("action", (string arg1, string arg2) =>
            {
                Assert.Fail("Command should not get executed");
            });

            Execute("action arg1 arg2 arg3", false);
            AssertResult("  Wrong number of arguments", "  usage: action <arg1> <arg2>");
        }
コード例 #32
0
        public void TestBoolArg3()
        {
            Lunar.RegisterCommand("action", (bool arg1, bool arg2, bool arg3) =>
            {
                AddResult("action " + arg1 + " " + arg2 + " " + arg3);
            });

            Execute("action 1 0 1");
            AssertResult("action True False True");
        }