Пример #1
0
        public DateTime ConvertPersianToGregorianDate(string persianDate)
        {
            var englishDigitPersianDate = FConvert.ToEnglishDigit(persianDate);
            var tokens = englishDigitPersianDate.Split('/');

            //validation
            if (tokens.Length != 3)
            {
                throw new ArgumentException("Persian date must have 3 tokens");
            }

            var year  = tokens[0];
            var month = tokens[1];
            var day   = tokens[2];

            //correcting date with format dd/mm/yyyy
            if (month.Length == 2 && day.Length == 4 && year.Length == 2)
            {
                var temp = day;
                day  = year;
                year = temp;
            }

            if (year.Length != 2 && year.Length != 4)
            {
                throw new ArgumentException("Persian year must be 2 or 4 digits");
            }

            if (month.Length > 2 || day.Length > 2)
            {
                throw new ArgumentException("Persian month/day must have 2 digit maximum");
            }

            if (year.Length == 2)
            {
                year = "13" + year;
            }

            var yearValue  = Convert.ToInt32(year);
            var monthValue = Convert.ToInt32(month);
            var dayValue   = Convert.ToInt32(day);

            if (monthValue < 1 || monthValue > 12)
            {
                throw new ArgumentException("month must be between 1 and 12");
            }

            if (dayValue < 1 || dayValue > 31)
            {
                throw new ArgumentException("day must be between 1 and 31");
            }

            var pc = new PersianCalendar();

            return(pc.ToDateTime(yearValue, monthValue, dayValue, 0, 0, 0, 0));
        }
Пример #2
0
        public bool IsValidPersianDate(string source)
        {
            var isValid = true;

            try
            {
                var tokens = FConvert.ToEnglishDigit(source).Split('/');
                var pc     = new PersianCalendar();
                pc.ToDateTime(Convert.ToInt32(tokens[0]), Convert.ToInt32(tokens[1]), Convert.ToInt32(tokens[2]), 0, 0, 0, 0);
            }
            catch
            {
                isValid = false;
            }

            return(isValid);
        }
Пример #3
0
        public string DatePartPersian(string datePart, string sourcePersianDate)
        {
            var tokens = FConvert.ToEnglishDigit(sourcePersianDate).Split('/');

            switch (datePart.ToLower())
            {
            case "year":
                return(tokens[0]);

            case "month":
                return(tokens[1]);

            case "day":
                return(tokens[2]);

            default:
                throw new ArgumentException("Invalid datePart");
            }
        }
Пример #4
0
        public string ToLongPersianDateStringPersianDigit(DateTime?date)
        {
            if (date == null)
            {
                return(string.Empty);
            }

            var calendar = new PersianCalendar();

            var day       = calendar.GetDayOfMonth(date.Value);
            var dayOfWeek = calendar.GetDayOfWeek(date.Value);
            var month     = calendar.GetMonth(date.Value);
            var year      = calendar.GetYear(date.Value);

            var persianString = string.Format("{0} {1} {2} {3}", GetPersianNameOfWeek(dayOfWeek),
                                              FConvert.ToPersianDigit(day), GetPersianNameOfMonth(month),
                                              FConvert.ToPersianDigit(year));

            return(persianString);
        }
Пример #5
0
 public string ConvertToPersianDatePersianDigit(DateTime?date)
 {
     return(FConvert.ToPersianDigit(ConvertToPersianDate(date)));
 }