/// <summary>
        /// خانه‌های جدول یک ماه شمسی را باز می‌گرداند.
        /// اگر خانه‌ای اطلاعاتی نداشت، آن خانه با نال پر می‌شود
        /// </summary>
        public static IEnumerable <PersianDay?> CreatePersianMonthCalendar(this int persianYear, int persianMonth)
        {
            var monthCells = new List <PersianDay?>();

            for (var idx = 0; idx <= 41; idx++)
            {
                monthCells.Add(item: null);
            }

            var startDay = persianYear.GetPersianWeekDayNumber(persianMonth) - 1;
            int i, j;

            for (i = startDay; i <= 6; i++)
            {
                var curDay   = i - startDay + 1;
                var holidays = persianYear.ToPersianDate(persianMonth, curDay).GetHolidays();
                monthCells[i] = new PersianDay
                {
                    Year     = persianYear,
                    Month    = persianMonth,
                    Day      = curDay,
                    Holidays = holidays
                };
            }

            var noOfDays = persianYear.GetPersianMonthLastDay(persianMonth);
            var k        = 7;

            for (j = 6 - startDay + 1; j <= noOfDays - 1; j++)
            {
                var curDay   = j + 1;
                var holidays = persianYear.ToPersianDate(persianMonth, curDay).GetHolidays();
                monthCells[k] = new PersianDay
                {
                    Year     = persianYear,
                    Month    = persianMonth,
                    Day      = curDay,
                    Holidays = holidays
                };
                k++;
            }

            RemoveLastNullRow(monthCells);
            return(monthCells);
        }
 /// <summary>
 /// تبدیل تاریخ شمسی به قمری
 /// </summary>
 /// <param name="persian">روز شمسی</param>
 /// <returns></returns>
 public static IslamicDay PersianDayToIslamicDay(this PersianDay persian)
 {
     return(JdnToIslamicDay(PersianDayToJdn(persian)));
 }
 /// <summary>
 ///
 /// </summary>
 /// <param name="persian"></param>
 /// <returns></returns>
 public static long PersianDayToJdn(this PersianDay persian)
 {
     return(PersianDayToJdn(persian.Year, persian.Month, persian.Day));
 }
 /// <summary>
 ///
 /// </summary>
 /// <param name="persian"></param>
 /// <returns></returns>
 public static DateTime PersianDayToGregorian(this PersianDay persian)
 {
     return(JdnToGregorianDateTime(PersianDayToJdn(persian)));
 }