PDA

View Full Version : سوال: گرفتن تداخل ساعت



industry
پنج شنبه 04 تیر 1388, 11:58 صبح
سلام
ببخشید کسی میتونه راهنمایی کنه که چطوری توی C# میتونم تداخل ساعت بگیرم ؟
من دو فیلد دارم که ساعت شروع و پایان را در فرمی در C# میدم و باید با ساعت های شروع و پایان دیگه ای که در پایگاه sql دارم در جدول قراره ملاقات چک بشه و اگر تداخلی وجود داشت آن را اعلام کنه .
نمیدونم نوع فیلد رو باید از چه نوعی تعریف کنم timedate یا شایدم text ؟
لطفاً اگه کسی می دونه راهنمایی کنه که چه کدی باید بنویسم .
با تشکر

daneshjoo2
پنج شنبه 04 تیر 1388, 23:54 عصر
با سلام
تمامی فیلد ها را از جنس dateTime بگیرید:
1- ابتدا زمان زود تر و دیرتر را مشخص کنید.
2- ابتدای زمان دیرتر را از ابتدای زمان زود تر کسر کنید.(با توابع AddMinutes و AddYear و ... البته به صورت منفی)
3- انتهای زمان زودتر را از ابتدای زمان زودتر کسر کرده تا طول زمانی آن بدست آید.
4- در انتها نتایج حاصله از مرحله 2 و 3 را با هم مقایسه کرده، اگر مرحله 2 از 3 کمتر بود تداخل دارند.
(ببخشید امکان فرستادن کد نبود)

mojtaba1363
جمعه 05 تیر 1388, 03:35 صبح
سلام دوست عزیز

اگه در جدول sql فیلد char تعریف کنی بهتره چون Data Time تاریخ میلادی میگره

seven7777777
جمعه 05 تیر 1388, 12:07 عصر
همون طور که دوست خوبم Daneshjoo2 گفت عمل کنی راحت تر به نتیجه میرسی .
تاریخ میلادی هم با کلاس های مختلف قابل تبدیل به شمسی هست .
مقایسه در حالت DateTime هم معمولا راحت انجام میشه ( فکر کنم با TimeSpan خیلی راحت باشه ) .
فقط دو مقایسه نیاز داری اونم اینه که تاریخ شروع دوم باید بعد از تاریخ پایان اول باشه و یا تاریخ پایان دوم باید قبل از تاریخ شروع اول باشه به همین راحتی .

newgoldenman
جمعه 05 تیر 1388, 21:34 عصر
سلام.
در تكمیل پاسخ دوستان عزیز...

در حالتی كه فرض كنیم ساعت اول توی تاریخ اول و ساعت دوم توی تاریخ دوم قرار داره، یعنی مثلاً این دو تا زمان:
5 تیر 1388 ساعت 13:14:15
و
18 تیر 1388 ساعت 15:16:17

در این حالت، 13 حالت مختلف رو باید بررسی كرد برای بدست آوردن تمامی حالتهای تداخل موجود. كه توی این عكس براحتی قابل مشاهده هست:

http://barnamenevis.org/forum/attachment.php?attachmentid=32370&stc=1&d=1246040927

دو تا خط آبی ابتدا و انتهای زمان ها هستند.
خط قرمز بالا ابتدا و انتهای زمان ها هست.
خط های سبز 13 حالت مختلف هستند.
نقاط مشكی رو هم زدم كه بهتر بشه فهمید سر و ته ماجرا كجاست!

حالا اگر این 13 حالت رو یه جمع بندی كلی بكنیم، به سه حات كلی میرسیم.
اگر با نظر دوستان به جوابت رسیدی، فبها! اگر توضیح و عكس و نقاشی من كمكت كرد، باز هم خدا رو شكر. ولی اگر باز هم به نتیجه نرسیدی، بگو تا تابعی كه خودم نوشتم و ازش استفاده میكنم توی پروژه هام، بهت بدم!

یا علی مدد.