예제 #1
0
        public PersianDateTime AddDays(int Value)
        {
            DateTime gregorianDate = this.gregorianDate.AddDays(Convert.ToDouble(Value));

            _persianDateTime = new PersianDateTime(gregorianDate);
            return(_persianDateTime);
        }
예제 #2
0
        /// <summary>
        /// تبدیل شمسی به میلادی
        /// </summary>
        /// <param name="persianDate">تاریخ شمسی</param>
        /// <returns></returns>
        public static DateTime ToMildiDate(string persianDate)
        {
            try
            {
                if (!Utility.IsEmpty(persianDate))
                {
                    string[] strs = persianDate.Split('/');
                    if (strs[0].Length == 4)
                    {
                        persianDate = strs[0] + "/" + strs[1].PadLeft(2, '0') + "/" + strs[2].PadLeft(2, '0');
                    }
                    else
                    {
                        persianDate = strs[2] + "/" + strs[1].PadLeft(2, '0') + "/" + strs[0].PadLeft(2, '0');
                    }

                    PersianDateTime p = PersianDateTime.Parse(persianDate);
                    return(p.GregorianDate);
                }
                return(GTSMinStandardDateTime);
            }
            catch (Exception ex)
            {
                if (ex is InvalidPersianDateException)
                {
                    throw ex;
                }
                else
                {
                    throw new BaseException(ex.Message, String.Format("Utility.ToMiladiDate({0})", persianDate), ex);
                }
            }
        }
예제 #3
0
        public PersianDateTime AddYears(int Value)
        {
            DateTime gregorianDate = this.gregorianDate.AddYears(Value);

            _persianDateTime = new PersianDateTime(gregorianDate);
            return(_persianDateTime);
        }
예제 #4
0
        /// <summary>
        /// ابتدای ماه شمسی را باتوجه به تاریخ میلادی برمیگرداند
        /// </summary>
        /// <param name="miladiDate"></param>
        /// <returns></returns>
        public static DateTime GetStartOfPersianMonth(DateTime miladiDate)
        {
            DateTime        monthStart = new DateTime();
            PersianDateTime date       = Utility.ToPersianDateTime(miladiDate);

            monthStart = Utility.ToMildiDate(String.Format("{0}/{1}/{2}", date.Year, date.Month, 1));
            return(monthStart);
        }
예제 #5
0
 /// <summary>
 /// وظیفه بررسی وجود تاریخ ارسالی در بازه این کلاس بعهده این تابع می باشد
 /// </summary>
 /// <param name="DateTime"></param>
 /// <returns>اگر تاریخ ارسالی در بازه نگهداری شده توسط کلاس باشد "درست" وگرنه "نا درست" برمی گرداند</returns>
 public bool IsContain(PersianDateTime DateTime)
 {
     if (this.fromDate.Date <= DateTime.GregorianDate.Date && this.toDate.Date >= DateTime.GregorianDate.Date)
     {
         return(true);
     }
     return(false);
 }
예제 #6
0
        /// <summary>
        /// انتهای ماه شمسی را باتوجه به تاریخ میلادی برمیگرداند
        /// </summary>
        /// <param name="miladiDate"></param>
        /// <returns></returns>
        public static DateTime GetEndOfPersianMonth(DateTime miladiDate)
        {
            DateTime        monthEnd   = new DateTime();
            PersianDateTime date       = Utility.ToPersianDateTime(miladiDate);
            int             endOfMonth = new PersianCalendar().GetDaysInMonth(date.Year, date.Month);

            monthEnd = Utility.ToMildiDate(String.Format("{0}/{1}/{2}", date.Year, date.Month, endOfMonth));
            return(monthEnd);
        }
예제 #7
0
 /// <summary>
 /// تبدیل میلادی به شمسی
 /// </summary>
 /// <param name="date">تاریخ میلادی</param>
 /// <returns></returns>
 public static string ToPersianDate(DateTime miladiDate)
 {
     try
     {
         return(PersianDateTime.MiladiToShamsi(Utility.ToString(miladiDate)));
     }
     catch (Exception ex)
     {
         throw new BaseException(ex.Message, String.Format("Utility.ToPersianDate({0})", miladiDate), ex);
     }
 }
예제 #8
0
 /// <summary>
 /// نام روز را برمیگرداند
 /// </summary>
 /// <param name="date"></param>
 /// <param name="language"></param>
 /// <returns></returns>
 public static string GetDayName(DateTime date, LanguagesName language)
 {
     if (language == LanguagesName.Parsi)
     {
         return(PersianDateTime.GetPershianDayName(date));
     }
     else
     {
         return(PersianDateTime.GetEnglishDayName(date));
     }
 }
예제 #9
0
 /// <summary>
 /// تبدیل میلادی به شمسی
 /// </summary>
 /// <param name="date">تاریخ میلادی</param>
 /// <returns></returns>
 public static PersianDateTime ToPersianDateTime(DateTime miladiDate)
 {
     try
     {
         PersianDateTime pd = new PersianDateTime(miladiDate);
         return(pd);
     }
     catch (Exception ex)
     {
         throw new BaseException(ex.Message, String.Format("Utility.ToPersianDateTime({0})", miladiDate), ex);
     }
 }
예제 #10
0
        /// <summary>
        /// تاریخ اولین روز سال مشخص شده را برمیگرداند
        /// </summary>
        /// <param name="Date"></param>
        /// <returns></returns>
        public static DateTime GetDateOfBeginYear(DateTime Date, LanguagesName SysLanguage)
        {
            switch (SysLanguage)
            {
            case LanguagesName.Parsi:
                return(new PersianDateTime(PersianDateTime.ToPersianDateTime(Date).Year, 1, 1).GregorianDate);

            case LanguagesName.English:
            case LanguagesName.Unknown:
            default:
                return(new DateTime(Date.Year, 1, Utility.GetEndOfMiladiMonth(Date.Year, 1)));
            }
        }
예제 #11
0
        /// <summary>
        /// ابتدای ماه بعد
        /// </summary>
        /// <returns></returns>
        public PersianDateTime NextMonthStart()
        {
            int _day   = 1;
            int _month = this.month + 1;

            if (_month > 12)
            {
                _month     = 1;
                this.year += 1;
            }
            _persianDateTime = new PersianDateTime(this.year, _month, _day);

            return(_persianDateTime);
        }
예제 #12
0
        /// <summary>
        /// تاریخ آخرین روز سال مشخص شده را برمیگرداند
        /// </summary>
        /// <param name="Date"></param>
        /// <returns></returns>
        public static DateTime GetDateOfEndYear(DateTime Date, LanguagesName SysLanguage)
        {
            switch (SysLanguage)
            {
            case LanguagesName.Parsi:
                int year = PersianDateTime.ToPersianDateTime(Date).Year;
                return(Convert.ToDateTime(PersianDateTime.ShamsiToMiladi(String.Format("{0}/{1}/{2}", year, 12, Utility.GetEndOfPersianMonth(year, 12)))));

            case LanguagesName.English:
            case LanguagesName.Unknown:
            default:
                return(new DateTime(Date.Year, 12, Utility.GetEndOfMiladiMonth(Date.Year, 12)));
            }
        }
예제 #13
0
 /// <summary>
 /// دوره محاسبات از روز و ماه تشکیل شده است که برای راحتی کار در مقایسه ها
 /// کلیدی ایجاد شده است که از ماه و روز یک عدد میسازد
 /// این عدد 5 رقمی است و با فرمت زیر ساخته میشود
 /// '2'+(MM).ToString()+(DD).ToString()
 /// اگر ماه مربوط به سال قبل بود بجای 2 عدد یک و اگر مربوط به سال بعد عدد سه را میگزاریم
 /// </summary>
 /// <param name="date"></param>
 /// <returns></returns>
 public static int ToDateRangeIndex(DateTime date, LanguagesName culture)
 {
     if (culture == LanguagesName.Parsi)
     {
         PersianDateTime p     = ToPersianDateTime(date);
         string          index = String.Format("2{0}{1}", p.Month.ToString().PadLeft(2, '0'), p.Day.ToString().PadLeft(2, '0'));
         return(ToInteger(index));
     }
     else if (culture == LanguagesName.English)
     {
         string index = String.Format("2{0}{1}", date.Month.ToString().PadLeft(2, '0'), date.Day.ToString().PadLeft(2, '0'));
         return(ToInteger(index));
     }
     return(0);
 }
예제 #14
0
        public static string MiladiToShamsi(string miladiDate)
        {
            try
            {
                DateTime date = Convert.ToDateTime(miladiDate);

                PersianDateTime pDate = new PersianDateTime(date);

                return(pDate.PersianDate);
            }
            catch (Exception e)
            {
                throw new Exception(String.Format("Sended date: {0} {1}", miladiDate, e.Message));
            }
        }
예제 #15
0
 /// <summary>
 /// تبدیل میلادی به شمسی
 /// </summary>
 /// <param name="date">تاریخ میلادی</param>
 /// <returns></returns>
 public static string ToPersianDate(string miladiDate)
 {
     try
     {
         if (!Utility.IsEmpty(miladiDate))
         {
             return(PersianDateTime.MiladiToShamsi(miladiDate));
         }
         return(PersianDateTime.MiladiToShamsi(Utility.ToString(GTSMinStandardDateTime)));
     }
     catch (Exception ex)
     {
         throw new BaseException(ex.Message, String.Format("Utility.ToPersianDate({0})", miladiDate), ex);
     }
 }
예제 #16
0
 public static string GetPershianDayName(DateTime GregorianDate)
 {
     return(GetPershianDayName(PersianDateTime.GetDayOfWeek(GregorianDate)));
 }
예제 #17
0
 static PersianDateTime()
 {
     now      = new PersianDateTime(DateTime.Now);
     MinValue = new PersianDateTime(1, 1, 1, 12, 0); // 12:00:00.000 AM, 22/03/0622
     MaxValue = new PersianDateTime(DateTime.MaxValue);
 }
예제 #18
0
 public PersianDateTime SubtractDays(int Value)
 {
     _persianDateTime = this.AddDays(-Value);
     return(_persianDateTime);
 }