PDA

View Full Version : حرفه ای: اعمال مقایسه ای روی تاریخ شمسی



hahaie
یک شنبه 18 اردیبهشت 1390, 11:33 صبح
سلام دوستان.من کامپوننت تاریخ شمسی را دارم و اونا در جدول sql از نوع text ذخیره میکنم.حال میخوام اعمال مقایسه روی آنها انجام بدم مثل کوچکتر یا بزرگتر .اما اولا که بصورت متن ذخیره میشند و اعمال مقایسه روی text نمیتوان انجام داد و دوما اگر از convert.todatetime استفاده کنم بعد از اجرا خطا میدهد که ورودی این تابع(یعنی convert.todatetime) باید بین تاریخ 1/1/1753 تا 31/12/9999 باشد.کسی راه حلش را میدونه؟؟؟؟

Directx
یک شنبه 18 اردیبهشت 1390, 11:38 صبح
خب از کلاس string استفاده کن مثلا می تونی با substing قسمت سال رو جدا کنی با هم مقایسه کنی اگه مساوی ماه و اگه مساوی بود روز و ..... رو با توجه به متنت جدا کن و مقایسه انجام بده

hahaie
یک شنبه 18 اردیبهشت 1390, 16:39 عصر
ممنون دوست عزیز اما این روش کمی کار میبره.روش ساده تری فکر کنم باشه

morteza271
یک شنبه 18 اردیبهشت 1390, 16:51 عصر
اگه با کد سی شارپ میخواین مقایسه کنید که همون بزرگتر و کوچکتر جواب میده(من داخل همه پروژه هام از همین روش استفاده میکنم) و اگه اگه هم با sql میخواین که دستور between جواب میده.

hahaie
یک شنبه 18 اردیبهشت 1390, 20:06 عصر
نمیشه دوست عزیز بالا که گفته ام تاریخ ثبت شده شمسی است

Directx
یک شنبه 18 اردیبهشت 1390, 21:39 عصر
دوست عزیز این کدو الان نوشتم امیدوارم به دردتون بخوره

string dt1, dt2;

DateTimeConverter con = new DateTimeConverter();
DateTime time1=(DateTime) con.ConvertFromString(dt1);
DateTime time2 = (DateTime)con.ConvertFromString(dt2);

TimeSpan sub = time2 - time1;
MessageBox.Show(sub.ToString());

morteza271
دوشنبه 19 اردیبهشت 1390, 10:12 صبح
نمیشه دوست عزیز بالا که گفته ام تاریخ ثبت شده شمسی است

مگه شما تاریخ رو به صورت تکست در بانک ذخیره نکردید؟
من که همیشه دارم ازش استفاده میکنم و مشکلی هم نداشتم.
فقط وقتی میخوای از یه تاریخ تا یه تاریخ دیگه رو جستجو کنی باید بگی از اولی بزرگتر باشه و از دومی کوچکتر.

raminsoft
دوشنبه 19 اردیبهشت 1390, 11:00 صبح
منم با troski کاملا موافقم ! خیلی راحت جواب میده همه اعمال با تکس شمسی
در مورد دستوری که Directx نوشتن مشکلش اینه که ماه های 31 روزه شمسی با 31 روزه میلادی فرق داره و این تابع اکثرا اشتباه جواب میده

hahaie
دوشنبه 19 اردیبهشت 1390, 21:14 عصر
من کد DirectX را نمیبینم...

saeidfar
سه شنبه 20 اردیبهشت 1390, 08:10 صبح
سلام دوستان.من کامپوننت تاریخ شمسی را دارم و اونا در جدول sql از نوع text ذخیره میکنم.حال میخوام اعمال مقایسه روی آنها انجام بدم مثل کوچکتر یا بزرگتر .اما اولا که بصورت متن ذخیره میشند و اعمال مقایسه روی text نمیتوان انجام داد و دوما اگر از convert.todatetime استفاده کنم بعد از اجرا خطا میدهد که ورودی این تابع(یعنی convert.todatetime) باید بین تاریخ 1/1/1753 تا 31/12/9999 باشد.کسی راه حلش را میدونه؟؟؟؟

بهتره اول دو تا تاریخ رو به روز تبدیل کنی , یا تاپیک برا تاریخ شمسی هستش به این آدرس "نمایش تاریخ فارسی به هر حالتی که دوست داشته باشید (http://barnamenevis.org/showthread.php?90830-نمایش-تاریخ-فارسی-به-هر-حالتی-که-دوست-داشته-باشید)" جستجو کن البته حتما همه صفحات تاپیک رو مطالعه بفرمایید من خیلی استفاده کردم دست آقای فراهانی درد نکنه

مهدی رحیم زاده
سه شنبه 20 اردیبهشت 1390, 10:03 صبح
با سلام خدمت دوستان عزیز
بنده تاریخ ها رو به صورت تکست ذخیره می کنم مثل شما و هیچ مشکلی هم با اعمال عملگر ها روش ندارم فقط نکته ای که داره اینه که تاریخ رو کامل وارد کنید یعنی مثلا شبیه این : "1390/02/03"
یعنی باید همیشه 10 کاراکتر باشه وقتی این شکلی باشه عملگر های > ، < ، = روش کار می کنن.
موفق و پیروز باشید