PDA

View Full Version : چگونه دو تاريخ شمسي را با هم مقايسه كنم؟



AmirGhasemi
یک شنبه 09 تیر 1392, 11:32 صبح
سلام دوستان
من به هنگام ورود اطلاعات تاريخ ها را شمسي مي كنم و ذخيره مي نمايم
حالا مي خواهم تمام ركوردهايي را كه بين دو تاريخ خاص وجود دارد را برگردانم
چطوري بايد اين كار را انجام دهم
شكل تاريخ هاي من اينچوريه مثلا 1392/4/7

mohsen_popo
یک شنبه 09 تیر 1392, 11:58 صبح
سلام .... کافی تاریخ از نوع Date باشه... بعد مقایسه معمولی >= یا <= انجام بده...

AmirGhasemi
یک شنبه 09 تیر 1392, 12:06 عصر
سلام .... کافی تاریخ از نوع Date باشه... بعد مقایسه معمولی >= یا <= انجام بده...


حتي اگر فارسي باشه؟ اصلا تاريخ فارسي را مي تونم از نو ع Date‌بگذارم؟

اوبالیت به بو
یک شنبه 09 تیر 1392, 12:12 عصر
درود بر شما

فارسی رو نمی تونید Date بگیرید. همیشه تاریخ های فارسی string و تاریخ های میلادی Date هستند.

می تونید تاریخ فارسی رو اول به Date میلادی تبدیل کنید و بعد مقایسه رو انجام بدید.

می تونید همون فارسی رو به صورت string رو با دیگری مقایسه کنید. توجه کنید ساختار دو رشته یکسان باشد.

amirreyhaneh
یک شنبه 09 تیر 1392, 12:48 عصر
با سلام
شما تاریخ فارسی(شمسی) رو از نوع string ذخیره کن وبعد با علامت < و> و<= و.. به راحتی مقایسه کن.فقط باید یادت باشه ماههاییی مثل خرداد را بجای 92/3/2 باید به صورت 92/03/02 دربانک ذخیره کنی

AmirGhasemi
یک شنبه 09 تیر 1392, 13:38 عصر
با سلام
شما تاریخ فارسی(شمسی) رو از نوع string ذخیره کن وبعد با علامت < و> و<= و.. به راحتی مقایسه کن.فقط باید یادت باشه ماههاییی مثل خرداد را بجای 92/3/2 باید به صورت 92/03/02 دربانک ذخیره کنی
ممنون دوست عزيز
همين تبديل 3 به 03 را چطور بايد موقع ذخيره كردن انجام بدهم؟

mohsen_popo
یک شنبه 09 تیر 1392, 23:28 عصر
من خودم تاریخ فارسی از نوع date داخل دیتابس ذخیره مکنم .. که داخل بانک (1392-03-26) این طور ذخیره میشه..... بعد با یه تاریخ دیگه خیلی راحت مقایسه میکنم.....

هیچ تبدیلی هم انجام نمیدم..... تاریخ از یک Calendar میگیره ..تبدیل به date بعد هم ذخیره میکنه...

pedram_ns
دوشنبه 10 تیر 1392, 09:23 صبح
سعنی کنید همیشه تاریخ رو بصورت میلادی ذخیره کنید. وقت مقایسه هم تاریخ شمسی را به میلادی تبدیل کنید و با تاریخ توی دیتابیس مقایسه کنید.

komeil64
دوشنبه 10 تیر 1392, 10:00 صبح
من تجربش رو داشتم اگر بخوای شمسی مقایسه کنی اذیت میشی
با یکی از کامپوننت های مبدل شمسی به میلادی مقل persia تبدیلش کن بعد راحت میلادی ها رو مقایسه کن
ضمنا از همون ابتدا میلادی ذخیره کن و موقع نمایش شمسی نمایش بده بهتره

amirreyhaneh
جمعه 04 مرداد 1392, 16:13 عصر
سلام
من همیشه تاریخ رو به صورت شمسی ذخیره ومقایسه کردم ولی تا الا هیچ مشکلی نداشتم
میشه بگین کجا مشکل پیش میاد؟

mohsen_1687
جمعه 04 مرداد 1392, 23:43 عصر
هیچ فرقی نمیکنه تاریخو شمسی تو دیتابیس قرار بدی یا میلادی ؛ خیلی راحت میتونی با یه کوری تاریخارو با هم مقایسه کنی

iranolom
شنبه 05 مرداد 1392, 00:51 صبح
ولی نظر من اینه و ح.دم از این شیوه بهره می برم

یه زمان میلادی هم ثبت کن تو جدول برا نگهداری زمان میلادی و دسترسی به زمان ساعتی و ...

اما در کنارش شمسی رو بصورت عددی int که میشه یه عدد هشت رقمی ذخیره بشه مثلا امروز میشه 13920505

که بعدا به راحتی بدون پردازش اضافی می تونید خروجی بگیرید برا سال چهار رقم اول ماه دو رقم وسط و روز دو رقم آخر

منطقی هست برا پایگاه های بزرگ چرا که سرچ رو مستقیم و با زمان خیلی کم می تونید روی تاریخ شمسی انجام بدید بازم بدون پردازش و تبدیل تاریخ ها

sasanrstm
چهارشنبه 10 مهر 1392, 08:49 صبح
اگرچه تاریخ این تایپک قدیمیه اما من یه سوال دارم واقعا میشه دوتا تاریخ رو باهم مقایسه کرد پس چرا مال من خطا میده من یه تاریخ تو جدولم دارم که بصورت فارسی از مبدل استفاده کردم وذخیره کردم حالا میخوام اونو با تاریخ امروز اون باز بصورت فارسی است مقایسه کنم خطا میده


string b = PersianDate.Now.ToShortDateString();
string b1=sdr10["date_shamsi"].ToString();
اینم شرط
if (b1 <= b)



Error 4 Operator '<=' cannot be applied to operands of type 'string' and 'string'


منتظر نظر دوستان هستم اونائی که میگن میشه حتما میشه .لطف کنید یه کد برام بزارید.

aminireza65
چهارشنبه 10 مهر 1392, 10:49 صبح
من همیشه برای تبدیل تاریخ سیستم به تاریخ شمسی از این کد استفاده میکنم
System.Globalization.PersianCalendar p = new System.Globalization.PersianCalendar
DateTime d = new DateTime
d = DateTime.Now
p.GetDayOfMonth(d)
p.GetMonth(d)
p.GetYear(d)
با این کار روز وماه و سال رو به شمسی بهم میده.
حالا برای مقایسه دو تا تاریخ بهتره به جای اینکه رشته ای مقایسه شوند، از کلاس timespan استفاده بشه
اینطوری
DateTime sysdate = DateTime.Now
DateTime dbdate = DateTime.Parse(GridView1.Rows[i].Cells[3].Text.ToString());
TimeSpan sp = sysdate - dbdate;
من تو این کد یه تاریخ رو از گرید گرفتم و از تاریخ سیستم کم کردم و ریختم تو timespan

i.RB92
جمعه 12 مهر 1392, 17:34 عصر
سلام دوستان
من به هنگام ورود اطلاعات تاريخ ها را شمسي مي كنم و ذخيره مي نمايم
حالا مي خواهم تمام ركوردهايي را كه بين دو تاريخ خاص وجود دارد را برگردانم
چطوري بايد اين كار را انجام دهم
شكل تاريخ هاي من اينچوريه مثلا 1392/4/7
شما هیچ موقع نباید تاریخ هاتون رو به صورت شمسی تو دیتابیس ذخیره کنید. همیشه اونارو میلادی دخیره کنید و هر جا نیاز شد به شمسی تبدیلشون کنید ومقایسه رو انجام بدین.
در این مورد هم ابتدا شمسی ها ها میلادی کنید و بعد مقایسه رو انجام بدین.