مرجع تخصصی برنامه نویسان

انجمن تخصصی برنامه نویسان فارسی زبان

کاربر سایت

amir124

عضویت از 1393/12/27

تشخیص شمسی بودن تاریخ

  • دوشنبه 27 دی 1395
  • 15:00
تشکر میکنم

درود

خسته نباشید

در صفحه زیر شما جواب دادید (?<YEAR>^\d{4})/(?<MONTH>\d{1,2})/(?<DAY>\d{1,2}$)

https://barnamenevisan.org/Forums/Post1003.html

در حالی که این Expression اشتباهه

یعنی تاریخ 1395/15/10 رو قبول می کنه و این یه اروره(15 تا ماه نداریم)

من یه جواب درست برای تشخیص شمسی بودن یک تاریخ می خوام!!

ممنون از زحماتتون

پاسخ های این پرسش

تعداد پاسخ ها : 2 پاسخ
کاربر سایت

ایمان مدائنی

عضویت از 1392/01/20

  • دوشنبه 27 دی 1395
  • 17:23

از کلاس زیر استفاده کنید


    class JalaliDate
      {
          public static bool IsValidDate(string date)
          {
              Regex pattern = new Regex(“^\\d{4}/\\d{2}/\\d{2}$”);
              Regex[] arrPattern = new Regex[] {
                  new Regex(“^\\d{4}/\\d{2}/\\d{2}$”),
                  new Regex(“^\\d{4}/\\d{2}/\\d{1}$”),
                  new Regex(“^\\d{4}/\\d{1}/\\d{2}$”),
                  new Regex(“^\\d{4}/\\d{1}/\\d{1}$”),
                  new Regex(“^\\d{2}/\\d{2}/\\d{2}$”),
                  new Regex(“^\\d{2}/\\d{2}/\\d{1}$”),
                  new Regex(“^\\d{2}/\\d{1}/\\d{2}$”),
                  new Regex(“^\\d{2}/\\d{1}/\\d{1}”)
              };
              int kabise = 1387;
              int year = 0;
              int mounth = 0;
              int day = 0; bool flag = false;
              for (int i = 0; i < arrPattern.Length; i++)
              {
                  if (arrPattern[i].IsMatch(date))
                      flag = true;
              }
              if (flag == false) return flag;
              //جدا کننده تاریخ می تواند یکی از این کاراکترها باشد
              string[] splitDate = date.Split(‘/’,‘-’,‘:’);
              year = Convert.ToInt32(splitDate[0]);
              mounth = Convert.ToInt32(splitDate[1]);
              day = Convert.ToInt32(splitDate[2]);
              if (mounth > 12 || mounth <= 0)
                  flag = false;
              else
              {
                  if (mounth < 7)
                  {
                      if (day > 31)
                      {
                          flag = false;
                      }
                  }
                  if (mounth == 12)
                  {
                      int t = (year – kabise) % 4;
                      if ((year – kabise) % 4 == 0)
                      {
                          if (day >= 31)
                              flag = false;
                      }
                      else if (day >= 30)
                          flag = false;
                  }
                  else
                  {
                      if (day > 30)
                          flag = false;
                  }
              }
              return flag;
          }
       }



کاربر سایت

amir124

عضویت از 1393/12/27

  • دوشنبه 27 دی 1395
  • 17:24

خیلی ممنون استاد

کاربرانی که از این پست تشکر کرده اند

هیچ کاربری تا کنون از این پست تشکر نکرده است

اگر نیاز به یک مشاور در زمینه طراحی سایت ، برنامه نویسی و بازاریابی الکترونیکی دارید

با ما تماس بگیرید تا در این مسیر همراهتان باشیم :)