۲۹
آبان
۹۰
پس از اینکه، مدت زیادی کتابخانه ای برای تبدیل تاریخ شمسی به میلادی و یا بالعکس را جستجو کردم، و نمونه های مختلف را دیدم و به کار بردم،
حالا نوبت به این رسیده بود که تاریخ شمسی که کاربر وارد کرده است را نیز از نظر صحت، بررسی کنم.
حاصل کار، شد یک متد همراه با باگ، که توسط همکار محترم، خانم محمد باقری[]، تکمیل گردید، برای تشکر از ایشان، حاصل دسترنج ایشان را اینجا، ارائه کردم!!!
Code Snippet
- 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;
- }
- }
- ۳ نظر
- ۲۹ آبان ۹۰ ، ۰۲:۰۰