IsLeapYear() публичный Метод

public IsLeapYear ( int year, int era ) : bool
year int
era int
Результат bool
Пример #1
0
        public void TestLeapYears()
        {
            PersianCalendar cal = new PersianCalendar();
            int lastNonLeap = 1;

            foreach (int year in s_leapYears)
            {
                Assert.True(cal.IsLeapYear(year), String.Format("Year {0} is not recognized as leap year", year));
                Assert.False(cal.IsLeapYear(lastNonLeap), String.Format("Year {0} is recognized as leap year", lastNonLeap));
                lastNonLeap = year - 1;
            }
        }
 [Test, Timeout(300000)] // Can take a long time under NCrunch.
 public void BclThroughHistory()
 {
     Calendar bcl = new PersianCalendar();
     // The "right" BCL equivalent to use depends on the version of .NET... pick it appropriately here.
     CalendarSystem noda = bcl.IsLeapYear(1) ? CalendarSystem.PersianSimple : CalendarSystem.PersianAstronomical;
     // Note: Noda Time stops in 9377, whereas the BCL goes into the start of 9378. This is because
     // Noda Time ensures that the whole year is valid.
     BclEquivalenceHelper.AssertEquivalent(bcl, noda, noda.MinYear, noda.MaxYear);
 }
 public void GenerateData()
 {
     var maxYear = PersianYearMonthDayCalculator.MaxPersianYear;
     var bcl = new PersianCalendar();
     byte[] data = new byte[maxYear / 8 + 1];
     // We don't really care whether IsLeapYear(MaxPersianYear+1) returns true or false,
     // but it must be valid to call it.
     for (int year = 1; year <= maxYear; year++)
     {
         if (bcl.IsLeapYear(year))
         {
             data[year >> 3] |= (byte)(1 << (year & 7));
         }
     }
     var base64 = Convert.ToBase64String(data);
     var lineLength = 80;
     for (int start = 0; start < base64.Length; start += lineLength)
     {
         var line = base64.Substring(start, Math.Min(lineLength, base64.Length - start));
         var last = start + lineLength >= base64.Length;
         Console.WriteLine($"\"{line}\"{(last ? "" : " +")}");
     }
 }
Пример #4
0
        public bool IsPersianYearLeap(int persianYear)
        {
            var pc = new PersianCalendar();

            return pc.IsLeapYear(persianYear);
        }
 private static void MonthMostmonth(int D, int M, int Y, int d, int m, int y)
 {
     var pc = new PersianCalendar();
         _mAge = (M - 1) - m;
         _yAge = Y - y;
         if ((pc.IsLeapYear(Y) && !pc.IsLeapYear(y)) || (pc.IsLeapYear(Y) && pc.IsLeapYear(y)) || (!pc.IsLeapYear(Y) && !pc.IsLeapYear(y)))
         {
             if (M >= 1 && M <= 6)
             {
                 _dAge = (D + 31) - d;
                 _dAge += _yAge / 4;
             }
         }
         if (!pc.IsLeapYear(Y) && pc.IsLeapYear(y))
         {
             if (M >= 1 && M <= 6)
             {
                 _dAge = (D + 31) - d;
                 _dAge += (_yAge / 4) + 1;
             }
             else if (M >= 7 && M <= 11)
             {
                 _dAge = (D + 30) - d;
                 _dAge += (_yAge / 4) + 2;
             }
             else if (M == 12)
             {
                 _dAge = (D + 29) - d;
                 _dAge += (_yAge / 4) + 3;
             }
         }
         if ((pc.IsLeapYear(Y) && !pc.IsLeapYear(y)) || (pc.IsLeapYear(Y) && pc.IsLeapYear(y)))
         {
             if (M >= 7 && M <= 12)
             {
                 _dAge = (D + 30) - d;
                 _dAge += (_yAge / 4) + 1;
             }
         }
         if (!pc.IsLeapYear(Y) && !pc.IsLeapYear(y))
         {
             if (M >= 7 && M <= 11)
             {
                 _dAge = (D + 30) - d;
                 _dAge += (_yAge / 4) + 1;
             }
             else if (M == 12)
             {
                 _dAge = (D + 29) - d;
                 _dAge += (_yAge / 4) + 2;
             }
         }
 }
        private static void MonthLessmonth(int D, int M, int Y, int d, int m, int y)
        {
            PersianCalendar pc = new PersianCalendar();
                _mAge = ((M - 1) + 12) - m;
                _yAge = (Y - 1) - y;
                if (pc.IsLeapYear(Y) && pc.IsLeapYear(y))
                {
                    if (M >= 1 && M <= 6)
                    {
                        _dAge = (D + 31) - d;

                        if (m > 1 && m <= 6)
                            _dAge += (_yAge / 4) + 1;

                        else if (m >= 7 && m <= 11)
                            _dAge += (_yAge / 4);

                        if (m == 12)
                            _dAge += (_yAge / 4) - 1;

                    }
                    ///////////////////////
                    if (M >= 7 && M <= 11)
                    {
                        _dAge = (D + 30) - d;

                        if (m > 7 && m <= 11)
                            _dAge += (_yAge / 4) + 1;

                        if (m == 12)
                            _dAge += (_yAge / 4);
                    }

                }
                //////////////////////////////////////////////
                if (!pc.IsLeapYear(Y) && pc.IsLeapYear(y))
                {
                    if (M >= 1 && M <= 6)
                    {
                        _dAge = (D + 31) - d;

                        if (m >= 1 && m <= 6)
                            _dAge += (_yAge / 4) + 1;

                        if (m >= 7 && m <= 12)
                            _dAge += (_yAge / 4);

                    }
                    if (M >= 7 && M <= 11)
                    {
                        _dAge = (D + 30) - d;

                        if (m >= 7 && m <= 11)
                            _dAge += (_yAge / 4) + 1;

                        if (m == 12)
                            _dAge += (_yAge / 4);
                    }
                }
                ///////////////////////////////////////////
                if (!pc.IsLeapYear(Y) && !pc.IsLeapYear(y))
                {
                    if (M >= 1 && M <= 6)
                    {
                        _dAge = (D + 31) - d;

                        if (m >= 1 && m <= 6)
                            _dAge += (_yAge / 4);

                        else if (m >= 7 && m <= 11)
                            _dAge += (_yAge / 4) - 1;

                        else if (m == 12)
                            _dAge += (_yAge / 4) - 2;

                    }
                    else if (M >= 7 && M <= 11)
                    {
                        _dAge = (D + 30) - d;

                        if (m >= 7 && m <= 11)
                            _dAge += _yAge / 4;

                        if (m == 12)
                            _dAge += (_yAge / 4) - 1;

                    }
                }
                //////////////////////////////////////////
                if (pc.IsLeapYear(Y) && !pc.IsLeapYear(y))
                {
                    if (M >= 1 && M <= 6)
                    {
                        _dAge = (D + 31) - d;

                        if (m >= 1 && m <= 6)
                            _dAge += (_yAge / 4);

                        if (m >= 7 && m <= 11)
                            _dAge += (_yAge / 4) - 1;

                        if (m == 12)
                            _dAge += (_yAge / 4) - 2;
                    }
                    ///////////////////////
                    if (M >= 7 && M <= 11)
                    {
                        _dAge = (D + 30) - d;

                        if (m >= 7 && m <= 11)
                            _dAge += _yAge / 4;

                        if (m == 12)
                            _dAge += (_yAge / 4) - 1;
                    }
                }
        }
        private static void MonthEqualemonth(int D, int M, int Y, int d, int m, int y)
        {
            PersianCalendar pc = new PersianCalendar();
                _mAge = ((M - 1) + 12) - m;
                _yAge = (Y - 1) - y;

                if (M >= 1 && M <= 6)
                    _dAge = (D + 31) - d;

                else if (M >= 7 && M <= 11)
                    _dAge = (D + 30) - d;

                else if (M == 12)
                {
                    if (pc.IsLeapYear(Y))
                        _dAge = (D + 30) - d;

                    else
                        _dAge = (D + 29) - d;
                }
                if (pc.IsLeapYear(y) && !pc.IsLeapYear(Y))
                    _dAge += (_yAge / 4) + 1;

                if ((!pc.IsLeapYear(Y) && !pc.IsLeapYear(y)) || (pc.IsLeapYear(Y) && !pc.IsLeapYear(y)))
                    _dAge += (_yAge / 4);

                if (pc.IsLeapYear(Y) && pc.IsLeapYear(y))
                    _dAge += (_yAge / 4) + 1;
        }
 /// <summary>
 /// This method is only present to make it simple to generate the data.
 /// </summary>
 /// <returns></returns>
 internal static string GenerateLeapYearData()
 {
     var bcl = new PersianCalendar();
     byte[] data = new byte[MaxPersianYear / 8 + 1];
     // We don't really care whether IsLeapYear(MaxPersianYear+1) returns true or false,
     // but it must be valid to call it.
     for (int year = 1; year <= MaxPersianYear; year++)
     {
         if (bcl.IsLeapYear(year))
         {
             data[year >> 3] |= (byte)(1 << (year & 7));
         }
     }
     return Convert.ToBase64String(data);
 }
        public static bool PersianIsLeap(int PersianYearNumber)
        {
            var pc = new System.Globalization.PersianCalendar();

            return(pc.IsLeapYear(PersianYearNumber));
        }
Пример #10
0
        private void button1_Click(object sender, EventArgs e)
        {
            long s1,s2;
            bool IsLeapYear;
            long year = 0;
            try
            {
                year = Convert.ToInt64(textBox1.Text);
                if (year <= 0)
                {

                    if (radioButton1.Checked || radioButton3.Checked)
                        throw new MinusException();
                }
                if (radioButton2.Checked)
                {
                    IsLeapYear = false;
                    GregorianCalendar gc = new GregorianCalendar(); 
                    if (DateTime.IsLeapYear((int)year)||gc.IsLeapYear((int)year))
                        IsLeapYear = true;
                    else
                        IsLeapYear = false;
                    if (IsLeapYear)
                        MessageBox.Show("Year " + year + " is a leap year", "Leap Year");
                    else
                        MessageBox.Show("Year " + year + " is not a leap year", "Leap Year");
                }
                
                if (radioButton5.Checked && year>0)
                {
                    IsLeapYear = false;
                    if (year % 4 == 0 && year % 100 != 0)
                        IsLeapYear = true;
                    if (year % 400 == 0)
                        IsLeapYear = true;
                    if (IsLeapYear)
                        MessageBox.Show("Year " + year + " is a leap year", "Leap Year");
                    else
                        MessageBox.Show("Year " + year + " is not a leap year", "Leap Year");
                }
                else if (year < 0 && radioButton5.Checked)
                    MessageBox.Show("Year must be positive","Error");
                if (radioButton1.Checked && year > 0)
                {
                    IsLeapYear = false;
                    s1 = (year + 2346) % 2820;
                    if (s1 == 0)
                    {
                        IsLeapYear = true;
                    }
                    else
                    {
                        s2 = s1 % 128;
                        switch (s2)
                        {
                            case 0:
                                IsLeapYear = true;
                                break;
                            case 5:
                                IsLeapYear = true;
                                break;
                            case 9:
                                IsLeapYear = true;
                                break;
                            case 13:
                                IsLeapYear = true;
                                break;
                            case 17:
                                IsLeapYear = true;
                                break;
                            case 21:
                                IsLeapYear = true;
                                break;
                            case 25:
                                IsLeapYear = true;
                                break;
                            case 29:
                                IsLeapYear = true;
                                break;
                            case 34:
                                IsLeapYear = true;
                                break;
                            case 38:
                                IsLeapYear = true;
                                break;
                            case 42:
                                IsLeapYear = true;
                                break;
                            case 46:
                                IsLeapYear = true;
                                break;
                            case 50:
                                IsLeapYear = true;
                                break;
                            case 54:
                                IsLeapYear = true;
                                break;
                            case 58:
                                IsLeapYear = true;
                                break;
                            case 62:
                                IsLeapYear = true;
                                break;
                            case 67:
                                IsLeapYear = true;
                                break;
                            case 71:
                                IsLeapYear = true;
                                break;
                            case 75:
                                IsLeapYear = true;
                                break;
                            case 79:
                                IsLeapYear = true;
                                break;
                            case 83:
                                IsLeapYear = true;
                                break;
                            case 87:
                                IsLeapYear = true;
                                break;
                            case 91:
                                IsLeapYear = true;
                                break;
                            case 95:
                                IsLeapYear = true;
                                break;
                            case 100:
                                IsLeapYear = true;
                                break;
                            case 104:
                                IsLeapYear = true;
                                break;
                            case 108:
                                IsLeapYear = true;
                                break;
                            case 112:
                                IsLeapYear = true;
                                break;
                            case 116:
                                IsLeapYear = true;
                                break;
                            case 120:
                                IsLeapYear = true;
                                break;
                            case 124:
                                IsLeapYear = true;
                                break;
                            default:
                                IsLeapYear = false;
                                break;
                        }
                    }

                    if (IsLeapYear)
                        MessageBox.Show("سال " + year + " کبیسه است", "سال کبیسه");
                    else
                        MessageBox.Show("سال " + year + " کبیسه نیست", "سال کبیسه");
                }
                if (radioButton3.Checked && year > 0)
                {
                    IsLeapYear = false;
                    s1 = year % 33;
                    switch (s1)
                    {
                        case 1:
                            IsLeapYear = true;
                            break;
                        case 5:
                            IsLeapYear = true;
                            break;
                        case 9:
                            IsLeapYear = true;
                            break;
                        case 13:
                            IsLeapYear = true;
                            break;
                        case 17:
                            IsLeapYear = true;
                            break;
                        case 22:
                            IsLeapYear = true;
                            break;
                        case 26:
                            IsLeapYear = true;
                            break;
                        case 30:
                            IsLeapYear = true;
                            break;

                    }
                    if (IsLeapYear)
                        MessageBox.Show("سال " + year + " کبیسه است", "سال کبیسه");
                    else
                        MessageBox.Show("سال " + year + " کبیسه نیست", "سال کبیسه");
                }
                if (radioButton4.Checked)
                {

                    IsLeapYear = false;
                    PersianCalendar ps = new PersianCalendar();
                    IsLeapYear = ps.IsLeapYear((int)year);
                    if (IsLeapYear)
                        MessageBox.Show("سال " + year + " کبیسه است", "سال کبیسه");
                    else
                        MessageBox.Show("سال " + year + " کبیسه نیست", "سال کبیسه");

                }

            }
            catch (OverflowException)
            {
                if (radioButton1.Checked || radioButton3.Checked)
                    MessageBox.Show("عدد وارد شده بسیار بزرگ است", "Error");
                if (radioButton5.Checked)
                    MessageBox.Show("Your Number is too great","Error");
                if (radioButton2.Checked)
                    MessageBox.Show("Your Year Number is greater than 9999", "Error");
                if (radioButton4.Checked)
                    MessageBox.Show("سال باید از 9378 کوچکتر باشد", "Error");
            }
            catch (FormatException)
            {
                if (radioButton1.Checked || radioButton3.Checked || radioButton4.Checked)
                    MessageBox.Show("ورودی معتبر نیست", "Error");
                if (radioButton2.Checked||radioButton5.Checked)
                    MessageBox.Show("Invalid Input", "Error");
            }
            catch (ArgumentOutOfRangeException)
            {
                if (radioButton2.Checked)
                    MessageBox.Show("Your Year Number must be between 1 to 9999", "Error");
                if (radioButton4.Checked)
                    MessageBox.Show("سال باید عددی طبیعی و کوچکتر از 9378 باشد", "Error");
            }
            catch (MinusException)
            {
                if (radioButton1.Checked || radioButton3.Checked)
                    MessageBox.Show("سال باید مثبت باشد", "Error");
                if (radioButton5.Checked)
                    MessageBox.Show("Year must be positive", "Error");
            }
        }