Exemplo n.º 1
0
 protected Calendar(int year, int month, int day)
     : this()
 {
     Init();
     Year  = year;
     Month = CalendarCulture.GetMonth(month);
     Day   = day;
 }
Exemplo n.º 2
0
 protected Calendar(int year, int month, int day, int hour, int minute, int second) : this()
 {
     Year   = year;
     Month  = CalendarCulture.GetMonth(month);
     Day    = day;
     Hour   = hour;
     Minute = minute;
     Second = second;
 }
Exemplo n.º 3
0
 public IMonth ChangeMonth(IMonth month, int amountOfChangeMonth)
 {
     if (amountOfChangeMonth >= MonthCount || amountOfChangeMonth < 1)
     {
         throw new CalendarExceptions();
     }
     month = CalendarCulture.GetMonth(month + amountOfChangeMonth);
     return(month);
 }
Exemplo n.º 4
0
 private IMonth ChangeMonth(int amountOfChangeMonth)
 {
     if (amountOfChangeMonth >= MonthCount || amountOfChangeMonth < 1)
     {
         throw new CalendarExceptions();
     }
     Month = CalendarCulture.GetMonth(Month.Index + amountOfChangeMonth);
     return(CalendarCulture.GetMonth(Month));
 }
Exemplo n.º 5
0
        public override ICalendar JulianToDate(double julianNumber)
        {
            double year;
            double month;
            double day;

            julianNumber = Math.Floor(julianNumber) + 0.5;
            year         = Math.Floor(((30 * (julianNumber - Epoch)) + 10646) / 10631);
            month        = Math.Min(12, Math.Ceiling((julianNumber - (29 + DateToJulian(new IslamicDate((int)year, 1, 1)))) / 29.5) + 1);
            day          = (julianNumber - DateToJulian(new IslamicDate((int)year, (int)month, 1))) + 1;
            Year         = (int)year;
            Month        = CalendarCulture.GetMonth((int)month);
            Day          = (int)day;
            return(new IslamicDate(Year, Month, Day));
        }
Exemplo n.º 6
0
        /// <summary>
        /// Convert Julian number to persian calendarDate
        /// </summary>
        /// <param name="julianNumber"></param>
        /// <returns></returns>
        public override ICalendar JulianToDate(double julianNumber)
        {
            double year;
            double month;
            double day;
            double depoch;
            double cycle;
            double cyear;
            double ycycle;
            double aux1;
            double aux2;
            double yday;
            double jd;

            jd = Math.Floor(julianNumber) + 0.5;

            depoch = jd - DateToJulian(new PersianArithmeticDate(475, 1, 1));
            cycle  = Math.Floor(depoch / 1029983);
            cyear  = Mod(depoch, 1029983);
            if (Math.Abs(cyear - 1029982) < 0.5)
            {
                ycycle = 2820;
            }
            else
            {
                aux1   = Math.Floor(cyear / 366);
                aux2   = cyear % 366;
                ycycle = Math.Floor(((2134 * aux1) + (2816 * aux2) + 2815) / 1028522) + aux1 + 1;
            }
            year = ycycle + (2820 * cycle) + 474;
            year = year <= 0 ? year - 1 : year;
            if (year <= 0)
            {
                year--;
            }
            yday  = (jd - DateToJulian(new PersianArithmeticDate((int)year, 1, 1))) + 1;
            month = (yday <= 186) ? Math.Ceiling(yday / 31) : Math.Ceiling((yday - 6) / 30);
            day   = (jd - DateToJulian(new PersianArithmeticDate((int)year, (int)month, 1))) + 1;
            Year  = (int)year;
            Month = CalendarCulture.GetMonth((int)month);//(int)month;
            Day   = (int)day;
            return(new PersianArithmeticDate(Year, Month, Day));;
        }
Exemplo n.º 7
0
        public sealed override ICalendar JulianToDate(double julianNumber)
        {
            double wjd;
            double depoch;
            double quadricent;
            double dqc;
            double cent;
            double dcent;
            double quad;
            double dquad;
            double yindex;
            double year;
            double yearday;
            double leapadj;

            wjd        = Math.Floor(julianNumber - 0.5) + 0.5;
            depoch     = wjd - Epoch;
            quadricent = Math.Floor(depoch / 146097);
            dqc        = depoch % 146097;
            cent       = Math.Floor(dqc / 36524);
            dcent      = dqc % 36524;
            quad       = Math.Floor(dcent / 1461);
            dquad      = dcent % 1461;
            yindex     = Math.Floor(dquad / 365);
            year       = (quadricent * 400) + (cent * 100) + (quad * 4) + yindex;
            if (!((cent == 4) || (yindex == 4)))
            {
                year++;
            }
            yearday = wjd - DateToJulian(new GregorianDate((int)year, 1, 1));
            leapadj = ((wjd < DateToJulian(new GregorianDate((int)year, 3, 1))) ? 0
                                                          :
                       (LeapAlgorithm.IsLeap(new GregorianDate((int)year, 1, 1)) ? 1 : 2)
                       );
            var month = Math.Floor((((yearday + leapadj) * 12) + 373) / 367);
            var day   = (wjd - DateToJulian(new GregorianDate((int)year, (int)month, 1))) + 1;

            Year  = (int)year;
            Month = CalendarCulture.GetMonth((int)month);
            Day   = (int)day;
            return(new GregorianDate(Year, Month, Day));
        }
Exemplo n.º 8
0
        /// <summary>
        /// Convert Julian number to persian calendarDate
        /// </summary>
        /// <param name="julianNumber"></param>
        /// <returns></returns>
        public override ICalendar JulianToDate(double julianNumber)
        {
            double year;
            double month;
            double day;
            double equinox;
            double yday;

            double[] adr;
            var      jd = Math.Floor(julianNumber) + 0.5;

            adr     = CalcYear(jd);
            year    = adr[0];
            equinox = adr[1];
            day     = Math.Floor((jd - equinox) / 30) + 1;
            yday    = (Math.Floor(jd) - DateToJulian(new PersianDate((int)year, 1, 1))) + 1;
            month   = (yday <= 186) ? Math.Ceiling(yday / 31) : Math.Ceiling((yday - 6) / 30);
            day     = (Math.Floor(jd) - DateToJulian(new PersianDate((int)year, (int)month, 1))) + 1;
            Year    = (int)year;
            Month   = CalendarCulture.GetMonth((int)month);
            Day     = (int)day;
            return(new PersianDate(Year, Month, Day));
        }
Exemplo n.º 9
0
 protected override void Init()
 {
     CalendarCulture = new PersianCalendarCulture();
     LeapAlgorithm   = new PersianOfficialLeap();
 }
Exemplo n.º 10
0
 protected override void Init()
 {
     CalendarCulture = new GregorianCalendarCulture();
     LeapAlgorithm   = new GregorianLeap();
 }
Exemplo n.º 11
0
 protected override void Init()
 {
     CalendarCulture = new IslamicCalendarCulture();
     LeapAlgorithm   = new IslamicLeap();
 }