Meysam's Experiences

MeyEx ,محلی برای انتشار تجربیات من در زمینه های مرتبط با حوزه ی تولید نرم افزار

Meysam's Experiences

MeyEx ,محلی برای انتشار تجربیات من در زمینه های مرتبط با حوزه ی تولید نرم افزار

Meysam's Experiences

در زمینه ی تولید نرم افزار فعالیت دارم. نوشته های این بلاگ به طور خاص در مورد تمامی زمینه هایی که منتهی به تولید نرم افزار و یا تجربیاتی که در محیط کاریم کسب می کنم خواهند بود. [البته فعلا به دلیل مشغله های جانبی دیگر و داشتن مخاطب در آن حوزه ها, مطالب کمی غیر نرم افزار شده است!]
در این بلاگ سعی شده که مطالب به صورت تخصصی و دسته بندی شده منتشر شوند

تابلوی اعلانات
جدیدترین نظرات
  • Ali در ۳۱ تیر ۹۶، ۱۵:۴۷ ، نظرش اين بود كه:
    عالی

۱ مطلب در آبان ۱۳۹۰ ثبت شده است

۲۹
آبان
۹۰

پس از اینکه، مدت زیادی کتابخانه ای برای تبدیل تاریخ شمسی به میلادی و یا بالعکس را جستجو کردم، و نمونه های مختلف را دیدم و به کار بردم،

حالا نوبت به این رسیده بود که تاریخ شمسی که کاربر وارد کرده است را نیز از نظر صحت، بررسی کنم.

حاصل کار، شد یک متد همراه با باگ، که توسط همکار محترم، خانم محمد باقری[]، تکمیل گردید، برای تشکر از ایشان، حاصل دسترنج ایشان را اینجا، ارائه کردم!!!

Code Snippet
  1. class JalaliDate
  2.   {
  3.       public static bool IsValidDate(string date)
  4.       {
  5.           Regex pattern = new Regex(“^\\d{4}/\\d{2}/\\d{2}$”);
  6.           Regex[] arrPattern = new Regex[] {
  7.               new Regex(“^\\d{4}/\\d{2}/\\d{2}$”),
  8.               new Regex(“^\\d{4}/\\d{2}/\\d{1}$”),
  9.               new Regex(“^\\d{4}/\\d{1}/\\d{2}$”),
  10.               new Regex(“^\\d{4}/\\d{1}/\\d{1}$”),
  11.               new Regex(“^\\d{2}/\\d{2}/\\d{2}$”),
  12.               new Regex(“^\\d{2}/\\d{2}/\\d{1}$”),
  13.               new Regex(“^\\d{2}/\\d{1}/\\d{2}$”),
  14.               new Regex(“^\\d{2}/\\d{1}/\\d{1}”)
  15.           };
  16.           int kabise = 1387;
  17.           int year = 0;
  18.           int mounth = 0;
  19.           int day = 0; bool flag = false;
  20.           for (int i = 0; i < arrPattern.Length; i++)
  21.           {
  22.               if (arrPattern[i].IsMatch(date))
  23.                   flag = true;
  24.           }
  25.           if (flag == false) return flag;
  26.           //جدا کننده تاریخ می تواند یکی از این کاراکترها باشد
  27.           string[] splitDate = date.Split(‘/’,‘-’,‘:’);
  28.           year = Convert.ToInt32(splitDate[0]);
  29.           mounth = Convert.ToInt32(splitDate[1]);
  30.           day = Convert.ToInt32(splitDate[2]);
  31.           if (mounth > 12 || mounth <= 0)
  32.               flag = false;
  33.           else
  34.           {
  35.               if (mounth < 7)
  36.               {
  37.                   if (day > 31)
  38.                   {
  39.                       flag = false;
  40.                   }
  41.               }
  42.               if (mounth == 12)
  43.               {
  44.                   int t = (year – kabise) % 4;
  45.                   if ((year – kabise) % 4 == 0)
  46.                   {
  47.                       if (day >= 31)
  48.                           flag = false;
  49.                   }
  50.                   else if (day >= 30)
  51.                       flag = false;
  52.               }
  53.               else
  54.               {
  55.                   if (day > 30)
  56.                       flag = false;
  57.               }
  58.           }
  59.           return flag;
  60.       }
  61.    }
  • میثم هوشمند