PDA

View Full Version : یه مشکل خیلی عجیب و غریب!!!



rnm123
چهارشنبه 27 خرداد 1388, 00:15 صبح
سلام من یک برنامه ای نوشته ام که در آ« از یک پایگاه داده تاریخ میلادی را خوانده و به شمسی تبدیل کرده و نمایش میدهد. برای تست برنامه در پایگاه خود 1000 تا رکورد تاریخ را بصورت افزایشی یک روزه وارد کردم ( 1 فروردین 88 -- 2 فروردین 88 -- 3 فروردین 88 و الی آخر) برنامه تا تاریخ میلادی 2009/05/19 را به درستی نمایش میدهد ولی وقتی به تاریخ 2009/05/20 می رسد خطای Year, Month, and Day parameters describe an un-representable DateTime را میدهد . کد تبدیل تابع من هم بصورت زیر است :


dataGridView1[0, i].Value = (new DateTime(Percal.GetYear(((DateTime)Dv1[i][5])), Percal.GetMonth(((DateTime)Dv1[i][5])), Percal.GetDayOfMonth(((DateTime)Dv1[i][5])))).Date;

DV1 نام یک دیتاویو است که اطلاعات خوانده شده از پایگاه داده را در آن قرار داده ام. PerCal هم شی نمونه سازی شده از PersianCalander است.
اگر کمکم کنید ممنون میشوم . من که هنگ کردم:عصبانی++::عصبانی++:

mohsen_csharp
چهارشنبه 27 خرداد 1388, 11:46 صبح
با سلام
دوست عزیز مشکل شما از این کد هست
(DateTime)Dv1[i][5)
شما نباید تاریخ شمسی رو به تاریخ میلادی cast کنید.
تاریخ 2009/05/20 برابر است با 1388/02/30 که شما این تاریخ 1388/02/30 رو به میلادی تبدیل نوع سریح کرده اید یعنی 30 فوریه 1388 و چون ماه فوریه کمتر از 30 روز هست این خطا رو میدهد.
برای تبدیل شمسی به میلادی شما باید ابتدا مقادیر روز ماه و سال را از هم جدا کرده و سپس به صورت زیر استفاده کنید

Percal.ToDateTime(1388, 3, 20, 1, 1, 1, 1);
در ضمن تا تاپیک شما پاک نشده عنوان مناسب انتخاب کنید