PDA

View Full Version : سوال: چه الگوریتمی پیشنهاد می کنید



mina68
یک شنبه 15 اسفند 1389, 13:28 عصر
با عرض سلام خدمت دوستان عزیر
فرض کنید دو تاریخ داریم می خواهیم بین این دو تاریخ محاسبه کنیم چند (ثانیه:دقیقه:ساعت) بین ساعات 12 شب تا 6 صبح بوده است
آیا خود .net روش برای بدست آوردن این مساله دارد ویا اگر ندارد شما چه الگوریتمی پیشنهاد میکنید :متفکر:

omid-vbAuto
یک شنبه 15 اسفند 1389, 13:46 عصر
با عرض سلام خدمت دوستان عزیر
فرض کنید دو تاریخ داریم می خواهیم بین این دو تاریخ محاسبه کنیم چند (ثانیه:دقیقه:ساعت) بین ساعات 12 شب تا 6 صبح بوده است
آیا خود .net روش برای بدست آوردن این مساله دارد ویا اگر ندارد شما چه الگوریتمی پیشنهاد میکنید :متفکر:

ببینید دوست عزیز تا جائی که من اطلاع دارم خود VB.net این امکان رو نداره.اما در مورد Dll ها و کلاس هائی که می تونه موجود باشه نظری نمی دم.(آخه منظور ما صرف دات نته)اما با روش های خیلی ساده می تونید براش یه کلاس بسسازید.من خودم نیاز به این کار داشتم که یه تابع براش نوشتم.چیز خاصی نداره دقت کنید به نتیجه می رسید.

mina68
یک شنبه 15 اسفند 1389, 13:59 عصر
از پاسختون متشکرم آقا امید
ولی داشتن حالت های مختلف یکم الکوریتم رو پیچیده کرده
مثلا اینکه تاریخ شروع وپایان هر دو در یک روز باشد و اصلا بین 12 تا 6 صبح نباشد
یا اینکه قسمتی بین 12 و 6 باشد و قسمتی نباشد
یا اینکه کلا بین 12 تا 6 باشند
شما برای تشخیص و محاسبه این حالات چه پیشنهاد می کنید

omid-vbAuto
یک شنبه 15 اسفند 1389, 14:01 عصر
از پاسختون متشکرم آقا امید
ولی داشتن حالت های مختلف یکم الکوریتم رو پیچیده کرده
مثلا اینکه تاریخ شروع وپایان هر دو در یک روز باشد و اصلا بین 12 تا 6 صبح نباشد
یا اینکه قسمتی بین 12 و 6 باشد و قسمتی نباشد
یا اینکه کلا بین 12 تا 6 باشند
شما برای تشخیص و محاسبه این حالات چه پیشنهاد می کنید


این تابع هم هستش آیا این مشکلتون رو حل نمی کنه؟

DateDiff

dll9095
یک شنبه 15 اسفند 1389, 14:10 عصر
همون طور که دوستمون در بالا اشاره کرد !!! فایل ضمیمه !!!

omid-vbAuto
یک شنبه 15 اسفند 1389, 14:18 عصر
همون طور که دوستمون در بالا اشاره کرد !!! فایل ضمیمه !!!

البته فراموش نشه که خواسته دوستمون اونی نیست که ما گفتیم. mina68 اگر مشکلتون هنوز پا برجاست از الگوریتم استفاده کنید.

mina68
یک شنبه 15 اسفند 1389, 14:18 عصر
با DateDiff کار کردم ولی چگونه می توان مشخص کرد چند ساعت از این دو تاریخ بین ساعت 12 و 6 هست

omid-vbAuto
یک شنبه 15 اسفند 1389, 14:38 عصر
با DateDiff کار کردم ولی چگونه می توان مشخص کرد چند ساعت از این دو تاریخ بین ساعت 12 و 6 هست


ببین مینا دقیقا مشکلت چیه؟می خواهی بطور مثال اختلاف زمانی بین دو زمان مختلف رو حساب کنی؟

ویا می خواهید اختلاف زمانی تایم های رخداده بین 12 ظهر تا 6 عصر رو بدست بیارید؟

بعدا این اختلاف زمانی می خواهید در چه واحدی نمایش داده بشه؟(ثانیه ،دقیقه،ساعت،و یا کلی : ثانیه - دقیقه - ساعت)؟

و در آخر قرار از این کار چه استفاده ای کنید؟کجا کاربرد داره؟

mina68
یک شنبه 15 اسفند 1389, 15:19 عصر
از پیگیری تون متشکرم امید خان
تصور کنید در جایی حقوق کارگران شیفت شب که بین ساعات 00:00:00 تا 06:00:00 در حال کار بوده اند با 40 درصد افزایش حقوق محاسبه می شود
حال من دو تاریخ و ساعت دارم ومی خواهم دقیقا محاسبه کنم بین این دو زمان کلا چند ساعت با فرمت HH:mm:ss در بازه زمانی بین ساعات 00 تا 06 صبح بوده است
می خواهم محاسبه کنم هر کارگر چند ساعت کار کرده و چند ساعت آن در این بازه بوده و چند ساعت در زمان های غیر از این بازه
حال ممکن است کارگری اصلا در این باز کار نکرده باشد و یا قسمتی از کار اش در یک روز در این بازه باشد

omid-vbAuto
یک شنبه 15 اسفند 1389, 17:04 عصر
از پیگیری تون متشکرم امید خان
تصور کنید در جایی حقوق کارگران شیفت شب که بین ساعات 00:00:00 تا 06:00:00 در حال کار بوده اند با 40 درصد افزایش حقوق محاسبه می شود
حال من دو تاریخ و ساعت دارم ومی خواهم دقیقا محاسبه کنم بین این دو زمان کلا چند ساعت با فرمت HH:mm:ss در بازه زمانی بین ساعات 00 تا 06 صبح بوده است
می خواهم محاسبه کنم هر کارگر چند ساعت کار کرده و چند ساعت آن در این بازه بوده و چند ساعت در زمان های غیر از این بازه
حال ممکن است کارگری اصلا در این باز کار نکرده باشد و یا قسمتی از کار اش در یک روز در این بازه باشد


پاسخ شما رو در این پست داده ام:

DLL ای برای کار با اختلاف زمان

(http://barnamenevis.org/showthread.php?277542-DLL-ای-برای-بدست-آوردن-اختلاف-زمانی-دو-مقدار)

mina68
یک شنبه 15 اسفند 1389, 19:05 عصر
از شما متشکرم آقا امید
برای بدست آوردن تفاوت بین دو تاریخ و زمان میشه از روش های ساده ایی مثل کد زیر استفاده کرد


Dim Time1, Time2 As Date
Dim DefTime As TimeSpan

Time1 = #1:00:00 AM#
Time2 = #4:10:56 AM#
DefTime = Time2 - Time1

MsgBox(DefTime.Hours & ":" & DefTime.Minutes & ":" & DefTime.Seconds)

ولی سوال من اینه که بین این دو زمان چطور میشه تشخیص داد چه مقدارش بین ساعت 00 تا 06 صبح بوده

mina68
یک شنبه 15 اسفند 1389, 19:30 عصر
به طور مثال چطور میشه تنایج زیر را بدست آورد

ساعت شروع # 1:10:10 2010/03/04 #
ساعت پایان # 3:20:25 2010/03/04 #
چواب 2:10:15


ساعت شروع # 23:10:10 2010/03/03 #
ساعت پایان # 3:20:25 2010/03/04 #
چواب 3:20:25 (از ساعت 00:00:00 تا ساعت پایان)


ساعت شروع # 5:50:00 2010/03/04 #
ساعت پایان # 8:20:25 2010/03/04 #
چواب 00:10:00 (از ساعت شروع تا ساعت 06:00:00)

ali_najari
دوشنبه 16 اسفند 1389, 01:11 صبح
دوست عزیز اگر فرصت دارید یکی دو روز زمان بدید تا من واستون یک کلاس آماده کنم

mina68
دوشنبه 16 اسفند 1389, 07:26 صبح
خدا ازت راضی باشه جون !:لبخندساده:
منتظرم

Slytherin
چهارشنبه 18 اسفند 1389, 03:18 صبح
ساده هست!
سال، ماه، روز، ساعت، دقیقه و ثانیه را ابتدا به کوچکترین واحد خود تبدیل نمایید. (در مثال شما ثانیه کوچکترین واحد هست)
سپس تعداد زمان آخر را از زمان اول بر اساس ثانیه کم نمایید.
در انتها زمان به دست آمده بر اساس ثانیه را با توجه به نیاز خود به واحد های بزرگتر نظیر ساعت تبدیل کنید.
نکته1: برای سنگین نشدن برنامه می توانید ماه و سال را با یک شرط چک کنید که اگر با هم برابر بودند، دیگر ماه و سال تبدیل به ثانیه نشود.
نکته2: نمی دونم دقت این مسئله چقدر براتون مهمه، اما پیشنهاد من اینه که کوچکترین واحد را دقیقه در نظر بگیرید و از ثانیه صرف نظر کنید تا سرعت به شدت افزایش یابد.
نکته3: از روش های دیگر هم می شود برای حل این مسئله استفاده کرد.