PDA

View Full Version : جمع كردن ساعت



mehdad.koulab
سه شنبه 13 مهر 1389, 13:51 عصر
سلام دوستان
من ميخوام ساعات كاريه يه فرد رو در sql ذخيره كنم حالا اين ساعات رو چجوري ميتونم باهم ديگه جمع كنم و آخرش يه ساعت كل بگيرم. مثلا


1/20+2/10=3/30
يا اينجوري بهتره

3/30+1/30=4
چجوري بگم وقتي جمع 60 شد به اون يكي اضافه كن؟

ali_najari
سه شنبه 13 مهر 1389, 14:31 عصر
دوست عزيز شما بايد ابتدا ساعت ها رو به دقيقه تبديل كنيد يعني اگه ساعت اوليه 08:30 هست و ساعت خروج شما 15:10 باشه براي محاسبه از اين طريق ميتوني استفاده كني



Function CalculateTime(ByVal StartTime AsString, ByVal EndTime AsString, OptionalByVal Seperator AsString = ":") AsString
Dim St
Dim Et
St = Split(StartTime, Seperator )
Et = Split(EndTime, Seperator )
Dim Sum_S AsInteger = (Val(St(0)) * 60) + Val(St(1))
Dim Sum_E AsInteger = (Val(Et(0)) * 60) + Val(Et(1))
Dim Daghighe AsInteger = (Sum_E - Sum_S)
Dim Baghi AsInteger = Daghighe Mod 60
CalculateTime = ((Daghighe - Baghi) / 60) & ":" & Format(Baghi, "00")
Return CalculateTime
EndFunction


طريقه استفاده:



MsgBox(CalculateTime("08:30", "17:00", ":"))


يا مي توانيد به اين طريق استفاده كنيد چون جدا كننده ساعت از دقيقه رو آزاد گذاشتم براي دوستان



MsgBox(CalculateTime("08/30", "15/10", "/"))

مقدار برگشي بهتون نشون ميده كه مدت زمان سپري شده 6 ساعت و 40 دقيقه مي باشد.

ali_najari
سه شنبه 13 مهر 1389, 14:36 عصر
البته اين براي محاسبه زمان در 1 روز است ولي اگه بخوايد شروع كار امروز باشه و پايان كار 3 روز ديگه باشه اون موقع بايد تاريخ رو هم توش دخالت بديد كه اگه نياز داشته باشيد ميتونم براتون آماده كنم

Hossein Bazyan
سه شنبه 13 مهر 1389, 17:58 عصر
سلام دوستان
من ميخوام ساعات كاريه يه فرد رو در sql ذخيره كنم حالا اين ساعات رو چجوري ميتونم باهم ديگه جمع كنم و آخرش يه ساعت كل بگيرم. مثلا


1/20+2/10=3/30
يا اينجوري بهتره

3/30+1/30=4
چجوري بگم وقتي جمع 60 شد به اون يكي اضافه كن؟

سلام
این همه دنگ و فنگ نمیخواد
من تابعی برای خودم نوشتم که مدت زمان بین دو ساعت را براساس دقیقه : ساعت برمیگرداند.
این تابع


Private Function CalcSumUren(ByVal tot As DateTime, ByVal van As DateTime) As String
CalcSumUren = Nothing
Dim _end As Date = tot
Dim ed As TimeSpan
ed = tot.Subtract(van)
CalcSumUren = Microsoft.VisualBasic.Right("00" & ed.Hours, 2) & ":" & Microsoft.VisualBasic.Right("00" & ed.Minutes, 2)

End Function


و این هم یک مثال


msgbox (CalcSumUren(timTot.Text, timVan.Text))


این تابع میتواند اختلاف ساعت بین چندین ده سال را نیز حساب کند.

mhmoein
سه شنبه 13 مهر 1389, 20:12 عصر
البته اين براي محاسبه زمان در 1 روز است ولي اگه بخوايد شروع كار امروز باشه و پايان كار 3 روز ديگه باشه اون موقع بايد تاريخ رو هم توش دخالت بديد كه اگه نياز داشته باشيد ميتونم براتون آماده كنم

دوست عزیز با سپاس از شما لطف می فرمائید نمونه این کد رو هم زحمتش رو بکشید. ممنون می شم. ( یعنی بتونه اختلاف زمان مابین دو روز رو هم محاسبه کنه باتشکر).

Hossein Bazyan
سه شنبه 13 مهر 1389, 20:17 عصر
دوست عزیز با سپاس از شما لطف می فرمائید نمونه این کد رو هم زحمتش رو بکشید. ممنون می شم. ( یعنی بتونه اختلاف زمان مابین دو روز رو هم محاسبه کنه باتشکر).
سلام
کدی رو که من نوشتم میتواند اختلاف ساعت بین چندین سال رو هم حساب کند.

mhmoein
سه شنبه 13 مهر 1389, 21:06 عصر
سلام
کدی رو که من نوشتم میتواند اختلاف ساعت بین چندین سال رو هم حساب کند.

ببخشید می شه مثالی بزنید ؟

ali_najari
سه شنبه 13 مهر 1389, 23:48 عصر
سلام
این همه دنگ و فنگ نمیخواد
من تابعی برای خودم نوشتم که مدت زمان بین دو ساعت را براساس دقیقه : ساعت برمیگرداند.
این تابع


Private Function CalcSumUren(ByVal tot As DateTime, ByVal van As DateTime) As String
CalcSumUren = Nothing
Dim _end As Date = tot
Dim ed As TimeSpan
ed = tot.Subtract(van)
CalcSumUren = Microsoft.VisualBasic.Right("00" & ed.Hours, 2) & ":" & Microsoft.VisualBasic.Right("00" & ed.Minutes, 2)

End Function


و این هم یک مثال


msgbox (CalcSumUren(timTot.Text, timVan.Text))


این تابع میتواند اختلاف ساعت بین چندین ده سال را نیز حساب کند.


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

من کد رو آماده میکنم ولی اگه شما هم راه حلی واسه این موضوع داشته باشید خیلی خوشحال میشم بدونم