Exemplo n.º 1
0
        public static int CalcEndDate(GPLocationProvider m_earth, GPGregorianTime vcStart, GPVedicTime vaStart, out GPGregorianTime vcEnd, out GPVedicTime vaEnd, int nType, int nCount)
        {
            vcEnd = new GPGregorianTime(vcStart);
            vaEnd = new GPVedicTime(vaStart);
            switch (nType)
            {
            case 1:
                //vcEnd = vcStart;
                if (nCount > 30240)
                {
                    nCount = 30240;
                }
                vcEnd.AddDays(nCount);
                VCTIMEtoVATIME(vcEnd, out vaEnd, m_earth);
                break;

            case 2:
                //vcEnd = vcStart;
                if (nCount > 4320)
                {
                    nCount = 4320;
                }
                vcEnd.AddDays(nCount * 7);
                VCTIMEtoVATIME(vcEnd, out vaEnd, m_earth);
                break;

            case 3:
                //vcEnd = vcStart;
                if (nCount > 1080)
                {
                    nCount = 1080;
                }
                vcEnd.AddMonths(nCount);
                VCTIMEtoVATIME(vcEnd, out vaEnd, m_earth);
                break;

            case 4:
                //vcEnd = vcStart;
                if (nCount > 90)
                {
                    nCount = 90;
                }
                vcEnd.AddYears(nCount);
                VCTIMEtoVATIME(vcEnd, out vaEnd, m_earth);
                break;

            case 5:
                //vaEnd = vaStart;
                if (nCount > 30240)
                {
                    nCount = 30240;
                }
                vaEnd.tithi += nCount;
                while (vaEnd.tithi >= 30)
                {
                    vaEnd.tithi -= 30;
                    vaEnd.masa++;
                }
                while (vaEnd.masa >= 12)
                {
                    vaEnd.masa -= 12;
                    vaEnd.gyear++;
                }
                VATIMEtoVCTIME(vaEnd, out vcEnd, m_earth);
                break;

            case 6:
                //vaEnd = vaStart;
                if (nCount > 1080)
                {
                    nCount = 1080;
                }
                vaEnd.masa = GPAppHelper.MasaToComboMasa(vaEnd.masa);
                if (vaEnd.masa == GPMasa.ADHIKA_MASA)
                {
                    vcEnd = new GPGregorianTime(vcStart);
                    vcEnd.AddMonths(nCount);
                    VCTIMEtoVATIME(vcEnd, out vaEnd, m_earth);
                    vaEnd.tithi = vaStart.tithi;
                    VATIMEtoVCTIME(vaEnd, out vcEnd, m_earth);
                }
                else
                {
                    vaEnd.masa += nCount;
                    while (vaEnd.masa >= 12)
                    {
                        vaEnd.masa -= 12;
                        vaEnd.gyear++;
                    }
                    vaEnd.masa = GPAppHelper.ComboMasaToMasa(vaEnd.masa);
                    VATIMEtoVCTIME(vaEnd, out vcEnd, m_earth);
                }
                break;

            case 7:
                //vaEnd = vaStart;
                if (nCount > 90)
                {
                    nCount = 90;
                }
                vaEnd.gyear += nCount;
                VATIMEtoVCTIME(vaEnd, out vcEnd, m_earth);
                break;
            }

            return(1);
        }