PDA

View Full Version : مقایسه دو تاریخ



happy65_sh
یک شنبه 10 خرداد 1388, 09:04 صبح
سلام
دوستای عزیز من واسه مقایسه دو تاریخ که به صورت رشته ذخیره کرده ام, تاریخ رو به تاریخ میلادی تبدیل کرده و بعد مقایسه کرده ام:


if (DateTime.pars("1388/02/29") >DateTime.pars("1388/02/23"))
do something

تا اینجا مشکلی نیست اما اگه تاریخ 29/2/1388 به 30/2/1388 تغییر کند پیغام خطا می ده.

string was not recognized as a valid DataeTime
آیا توی تقویم میلادی 30/2 نداریم؟برای حل این مشکل چیکار می تونم بکنم؟ البته راه هایی وجود داره اما من باید از همین روش استفاده کنم یعنی تبدیل رشته به تاریخ میلادی...
-----در ضمن جستجو هم کردم همه جا از مقایسه دو رشته که به شکل تاریخ هستند صحبت شده بود که من تا این قسمت مشکلی ندارم-----

masoud.ramezani
یک شنبه 10 خرداد 1388, 09:19 صبح
سلام

دوست عزیز چرا از کلاس PersianCalendar خود دات نت استفاده نمیکنی؟

happy65_sh
یک شنبه 10 خرداد 1388, 09:23 صبح
چطور می تونم با استفاده از کلاس PersianCalendar مقایسه بین دو رشته را انجام بدم؟

masoud.ramezani
یک شنبه 10 خرداد 1388, 10:53 صبح
سلام

به این مثال توجه کنید شاید به دردتون بخوره :



PersianCalendar pc1 = new PersianCalendar();
PersianCalendar pc2 = new PersianCalendar();
if (pc1.GetDayOfYear(pc1.ToDateTime(1388, 3, 10, 0, 0, 0, 0)) > pc2.GetDayOfYear(pc2.ToDateTime(1388, 3, 9, 0, 0, 0, 0)))
do something

happy65_sh
یک شنبه 10 خرداد 1388, 11:15 صبح
البته نه دقیقا

pc1.GetDayOfYear(pc1.ToDateTime(1388, 3, 10, 0, 0, 0, 0))
چون در صورتی که ماه های متفاوت داشته باشیم ممکنه مقدار صحیح بر گشت داده نشه من با pc1.ToDateTime مشکلم را حل کردم
به هر حال از راهنماییتون ممنونم.

masoud.ramezani
یک شنبه 10 خرداد 1388, 11:56 صبح
سلام

در هر صورتی یک عدد صحیح بر میگردونه. خروجی هم همون n امین روز ساله که بر اساس تاریخ شما به دست میاد. تنها مشکلی که ممکنه پیش بیاد ایه که دو تا سال متفاوت رو بخواهید با هم مقایسه کنید.

البته شما میتونید به صورت مستقیم DateTime های خروجی متد ToDateTime رو با هم مقایسه کنید. که خیلی راحت تره.