Meysam's Experiences

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

Meysam's Experiences

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

Meysam's Experiences

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

تابلوی اعلانات
جدیدترین نظرات

اعتبار سنجی تاریخ شمسی

يكشنبه, ۲۹ آبان ۱۳۹۰، ۰۲:۰۰ ق.ظ

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

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

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

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.    }
  • میثم هوشمند

C#

Persian Date

نظرات (۳)

با سلام ممنون از اشتراک تجربه هاتون این کد کار منو راه انداخت
پاسخ:
با سلام 
ممنون از ارسال نظرتون 

سلام
دوست عزیز سال کبیسه درست کار می کنه
از اینکه 1387 است به عنوان بیس کاری هستش ؟
پاسخ:
سلام؛
فکر نمیکنم تفاوتی کنه که کدام سال کبیسه رو بیس قرار بدیم؛
چون 4سال قبل و بعد از این 87 هم کبیسه هست،
لذا مشکلی نیست.
سلام
خیلی ممنون عالی

ارسال نظر

ارسال نظر آزاد است، اما اگر قبلا در بیان ثبت نام کرده اید می توانید ابتدا وارد شوید.
شما میتوانید از این تگهای html استفاده کنید:
<b> یا <strong>، <em> یا <i>، <u>، <strike> یا <s>، <sup>، <sub>، <blockquote>، <code>، <pre>، <hr>، <br>، <p>، <a href="" title="">، <span style="">، <div align="">
تجدید کد امنیتی