سلام به همگی
دوستان من میخوام که در برنامه ام از کاربر یک تاریخ(مثال "1390-12-31") رو دریافت کنم
حالا قبل از هر چیزی میخوام که تاریخ رو چک کنم و ببینم که چنین تاریخی صحیح هست یا نه
همگی میدونید که در اسفند ماه 31 روز وجود نداره چطوری باید تست کنم؟
سلام به همگی
دوستان من میخوام که در برنامه ام از کاربر یک تاریخ(مثال "1390-12-31") رو دریافت کنم
حالا قبل از هر چیزی میخوام که تاریخ رو چک کنم و ببینم که چنین تاریخی صحیح هست یا نه
همگی میدونید که در اسفند ماه 31 روز وجود نداره چطوری باید تست کنم؟
سلام
به نظر من بهتره که تاریخ رو با سه تا کمبو باکس از کاربر بگیری و بعد چک کنی که تاریخ درسته یا نه
یعنی یه کمبوباکس بزاری برای روز یه دونه برا ماه و یه دونه برا سال وبعد یه برنامه ای مثل این برنامه ای که برات میزارم بنویسی
موفق باشی
دوست عزیز راه حل شما بدرد نمیخوره
مثلا سال 91 اسفند 30 روز بوده اما امسال 29 روز هستش پس من نمیتونم هر سال بشینم و برنامم رو با تقویم بروز کنم
اینجوری برنامه من حداکثر کاراییش یک سال هستش
شاید بهترین روش نباشه، ولی شما میتونید، ابتدا روز، ماه و سال رو جدا کنید (به صورت int) و با استفاده از متد ToDateTime مربوط به کلاس System.Globalization.PersianCalendar، به تاریخ میلادی تبدیل کنید.این متد در صورتی که تاریخ نا معتبر باشه (مثل 1391/12/30) یک Exception رو Throw میکنه.با گذاشتن try...catch میشه فهمید که تاریخ معتبره یا نه.البته با توجه به هزینه try-catch مطمئن نیستم بهترین روش باشه.
البته راه دیگه هم، بررسی بازه مولفه های تاریخه.مثلا در ماه 1 تا 6 هر ماه 31 روزه و... .سال کبیسه رو هم با متد IsLeapYear مربوط به System.Globalization.PersianCalendar میتونید بررسی کنید.
فکر کنم سال های کبیسه هر چهار سال یکبار اتفاق می افتد ، اگر 91 داشتیم بعدی 4 سال بعد هست ، شما کافی 91 رو توی برنامه که میدونی کبیسه بوده رو داشته باشی ، سال های که با مضرب 4 باهاش اختلاف دارن 30 روزه هستند ، بقیه سال ها 29 روزه ، البته به شرطی که فرض من درست بوده باشه .