Exemple #1
0
 public static int MonthLastDay(int Y, int M)
 {
     if (M < 7)
     {
         return(31);
     }
     return(M < 12 || PersianDateTimeConverter.IsLeapYear((long)Y) ? 30 : 29);
 }
Exemple #2
0
        public static long MonthFirstDay(int Y, int M)
        {
            int  D = 1;
            long DOW;

            PersianDateTimeConverter.PersianDateDetail(PersianDateTimeConverter.FromPersianDate(Y, M, D), out Y, out M, out D, out DOW);
            return(DOW);
        }
Exemple #3
0
        public static string PersianDateToRString(DateTime date)
        {
            int  Y;
            int  M;
            int  D;
            long DOW;

            PersianDateTimeConverter.PersianDateDetail(date, out Y, out M, out D, out DOW);
            return(D.ToString() + "/" + M.ToString() + "/" + Y.ToString());
        }
Exemple #4
0
        public static DateTime GetMonthFirstDay(DateTime dt)
        {
            int  Y;
            int  M;
            int  D;
            long DOW;

            PersianDateTimeConverter.PersianDateDetail(dt, out Y, out M, out D, out DOW);
            return(PersianDateTimeConverter.FromPersianDate(Y, M, 1, dt.Hour, dt.Minute, dt.Second));
        }
Exemple #5
0
        public static long MonthLastDay(DateTime Dt)
        {
            int  Y;
            int  M;
            int  D;
            long DOW;

            PersianDateTimeConverter.PersianDateDetail(Dt, out Y, out M, out D, out DOW);
            return((long)PersianDateTimeConverter.MonthLastDay(Y, M));
        }
Exemple #6
0
        public static long WeekNo(DateTime Dt)
        {
            int  Y;
            int  M;
            int  D;
            long DOW;

            PersianDateTimeConverter.PersianDateDetail(Dt, out Y, out M, out D, out DOW);
            return(PersianDateTimeConverter.WeekNo(Y, M, D));
        }
Exemple #7
0
        public static DateTime AddMonths(DateTime dt, int MonthNo)
        {
            int  Y;
            int  M1;
            int  D;
            long DOW;

            PersianDateTimeConverter.PersianDateDetail(dt, out Y, out M1, out D, out DOW);
            int M2 = M1 + MonthNo;

            return(PersianDateTimeConverter.FromPersianDate(Y, M2, D, dt.Hour, dt.Minute, dt.Second));
        }
Exemple #8
0
        public PersianDateTime AddMonths(int Months)
        {
            int M = this.M + Months;
            int y = this.Y;

            while (M > 12)
            {
                M -= 12;
                ++y;
            }
            return((PersianDateTime)PersianDateTimeConverter.FromPersianDate(y, M, this.D));
        }
Exemple #9
0
        public static DateTime FromPersianDate(
            int Y,
            int M,
            int D,
            int hour,
            int minute,
            int second)
        {
            DateTime dateTime = PersianDateTimeConverter.FromPersianDate(Y, M, D);

            dateTime = dateTime.AddHours((double)hour);
            dateTime = dateTime.AddMinutes((double)minute);
            dateTime = dateTime.AddSeconds((double)second);
            return(dateTime);
        }
Exemple #10
0
        public static bool IsValidPersianDate(string datestr)
        {
            int Y;
            int M;
            int D;
            int hour;
            int minute;
            int second;

            if (!PersianDateTimeConverter.PersianDateParse(datestr, out Y, out M, out D, out hour, out minute, out second))
            {
                return(false);
            }
            return(PersianDateTimeConverter.IsValidPersianDate(Y, M, D));
        }
Exemple #11
0
        public static bool TryParse(string dateStr, out DateTime date)
        {
            date = DateTime.Now;
            int Y;
            int M;
            int D;
            int hour;
            int minute;
            int second;

            if (!PersianDateTimeConverter.PersianDateParse(dateStr, out Y, out M, out D, out hour, out minute, out second))
            {
                return(false);
            }
            date = PersianDateTimeConverter.FromPersianDate(Y, M, D, hour, minute, second);
            return(true);
        }
Exemple #12
0
 public static void ValidatePersianDate(ref int Y, ref int M, ref int D)
 {
     if (Y < 0)
     {
         Y = 1200;
     }
     if (Y < 100)
     {
         Y += 1300;
     }
     while (M < 1)
     {
         M += 12;
         --Y;
     }
     while (M > 12)
     {
         M -= 12;
         ++Y;
     }
     if (D < 1)
     {
         D = 1;
     }
     else if (M < 7 && D > 31)
     {
         D = 31;
     }
     else if (M > 6 && M < 12 && D > 30)
     {
         D = 30;
     }
     else if (!PersianDateTimeConverter.IsLeapYear((long)Y) && M == 12 && D > 29)
     {
         D = 29;
     }
     else
     {
         if (!PersianDateTimeConverter.IsLeapYear((long)Y) || M != 12 || D <= 30)
         {
             return;
         }
         D = 30;
     }
 }
Exemple #13
0
        public static DateTime FromPersianDate(int Y, int M, int D)
        {
            PersianDateTimeConverter.ValidatePersianDate(ref Y, ref M, ref D);
            long num1 = (long)((Y - 1277) / 33);
            long num2 = (long)((Y - 1277) % 33) / 4L;

            if (num2 == 8L)
            {
                --num2;
            }
            long num3 = num2 + num1 * 8L + (long)((Y - 1279) * 365) + 80L + (long)((M - 1) * 31) + (long)D;

            if (M > 7)
            {
                num3 -= (long)(M - 7);
            }
            return(DateTime.FromOADate((double)num3));
        }
Exemple #14
0
        public static string PersianDateToString(DateTime date)
        {
            int  Y;
            int  M;
            int  D;
            long DOW;

            PersianDateTimeConverter.PersianDateDetail(date, out Y, out M, out D, out DOW);
            string str1 = Y.ToString() + "/";

            if (M < 10)
            {
                str1 += "0";
            }
            string str2 = str1 + M.ToString() + "/";

            if (D < 10)
            {
                str2 += "0";
            }
            return(str2 + D.ToString());
        }
Exemple #15
0
        public static long WeekNo(int Y, int M, int D)
        {
            long num1 = PersianDateTimeConverter.MonthFirstDay(Y, 1);
            long num2 = (long)((M - 1) * 31 + D);

            if (M > 7)
            {
                num2 -= (long)(M - 7);
            }
            long num3 = num2 - (8L - num1);
            long num4 = (num3 - 1L) / 7L + 1L;

            if (num1 < 5L)
            {
                ++num4;
            }
            if (M == 12 && num3 % 7L > 0L && (long)(PersianDateTimeConverter.MonthLastDay(Y, M) - D) + num3 % 7L < 4L)
            {
                num4 = 1L;
            }
            return(num4);
        }
Exemple #16
0
        public static DateTime FromPersianDate(string Datestr)
        {
            int Y;
            int M;
            int D;
            int hour;
            int minute;
            int second;

            if (!PersianDateTimeConverter.PersianDateParse(Datestr, out Y, out M, out D, out hour, out minute, out second))
            {
                throw new InvalidPersianDateException();
            }
            if (!PersianDateTimeConverter.IsValidPersianDate(Y, M, D))
            {
                throw new InvalidPersianDateException();
            }
            long num1 = (long)((Y - 1277) / 33);
            long num2 = (long)((Y - 1277) % 33) / 4L;

            if (num2 == 8L)
            {
                --num2;
            }
            long num3 = num2 + num1 * 8L + (long)((Y - 1279) * 365) + 80L + (long)((M - 1) * 31) + (long)D;

            if (M > 7)
            {
                num3 -= (long)(M - 7);
            }
            DateTime dateTime = DateTime.FromOADate((double)num3);

            dateTime = dateTime.AddHours((double)hour);
            dateTime = dateTime.AddMinutes((double)minute);
            dateTime = dateTime.AddSeconds((double)second);
            return(dateTime);
        }
Exemple #17
0
 public PersianDateTime(int year, int month, int day)
 {
     this.Date = PersianDateTimeConverter.FromPersianDate(year, month, day);
 }
Exemple #18
0
 public PersianDateTime(string date)
 {
     this.Date = PersianDateTimeConverter.FromPersianDate(date);
 }
Exemple #19
0
 private void SetParams()
 {
     PersianDateTimeConverter.PersianDateDetail(this.date, out this.Y, out this.M, out this.D, out this.DOW);
 }
Exemple #20
0
 public static bool IsLeapYear(int year)
 {
     return(PersianDateTimeConverter.IsLeapYear((long)year));
 }
Exemple #21
0
 public PersianDateTime AddYears(int value)
 {
     return((PersianDateTime)PersianDateTimeConverter.FromPersianDate(this.Y + value, this.M, this.D));
 }
Exemple #22
0
 public static bool IsValidPersianDate(int Y, int M, int D)
 {
     return(M >= 1 && M <= 12 && D >= 1 && (M >= 7 || D <= 31) && ((M <= 6 || D <= 30) && (PersianDateTimeConverter.IsLeapYear((long)Y) || M != 12 || D <= 29)));
 }