PDA

View Full Version : مبتدی: جمع کردن چند تا ساعت با هم



m3raj_3
یک شنبه 08 آبان 1390, 12:38 عصر
سلام

میشه بگید ساعت ها رو چه جوری جمع کنم مثلا چندتازمانی که تو دیتابیس ذخیره کردم
مثلا روز اول 12:20 دقیقه کارکرد،روزدوم 14:20دقیقه
روز سوم20:12 ساعت کار کرده و اینارو جمع کنه
که مثلا بگه 170 ساعت و 20 دقیقه کار کرده
اینجوری بگه
از این کد برای به دست اوردن اختلاف استفادهمیکنم
میخوام اخرماه این اختلافارو جمع کنم
Dim D1 As Date
Dim D2 As Date
D1 = Convert.ToDateTime("1390/02/13" & "," & tm1.Text)
D2 = Convert.ToDateTime("1390/02/14" & "," & tm2.Text)
t3.Text = (D2 - D1).ToString


در ضمن یه سوال دیگه،
t3.text رو با چه data typeتو sql ذخیره کنم؟؟؟؟؟؟:(

mohammadriano
دوشنبه 09 آبان 1390, 09:24 صبح
سلام dll میلادی به شمسی رو دانلود کن
حالا اختلاف بین دو تاریخ رو بهت میده اما اختلاف دو ساعت:
a = minute(time)'o به همین سادگی a رو از c کم کن b رو از d اختلاف تاریخ رو هم shamsi.dll حساب می کنه
b = hour(time)'o
c = minute(time)'o
d = hour(time)'o
دو تاريخ شمسي دريافت مي‌كند و تفاضل تاريخ اول از تاريخ دوم را بر حسب روز برمي گرداند. ShamsiDiff (date1, date2) as long
البته
if a +c>60 then
b =b +1
v = a + c- 60
end if
یا
if a +c>60 then
d =d +1
v = a + c- 60
end if
فرقی نمی کنه با کدوم جمعشون کنی
چون b و d با هم بالاخره جمع میشن
if c + a >24 then
متغییری که مساوی ShamsiDiff قرار دادی رو + 1 کن
w = d +b -24
end if

mohammadriano
دوشنبه 09 آبان 1390, 09:26 صبح
یا ساعت قبلی خودت رو با این روش جداکن
a =left$(time)'o برای ساعت
b =right$(time)'o برای دقیقه

m3raj_3
دوشنبه 09 آبان 1390, 09:51 صبح
سلام dll میلادی به شمسی رو دانلود کن
حالا اختلاف بین دو تاریخ رو بهت میده اما اختلاف دو ساعت:
a = minute(time)'o به همین سادگی a رو از c کم کن b رو از d اختلاف تاریخ رو هم shamsi.dll حساب می کنه
b = hour(time)'o
c = minute(time)'o
d = hour(time)'o
دو تاريخ شمسي دريافت مي‌كند و تفاضل تاريخ اول از تاريخ دوم را بر حسب روز برمي گرداند. ShamsiDiff (date1, date2) as long

nدوست عزیر من اختلاف ها رو بهدست میارمو میریزم تو یه رکورد
میخوام اخر ماه این اختلافاروجمع کنم (این اختلافا شامل 30 تا عدد می شود مثلا 12 ساعت +8 ساعت+8:20 دقیقه +10 ساعت
و....

mohammadriano
دوشنبه 09 آبان 1390, 09:56 صبح
جواب رو کامل ویرایش کردم اگه مشکل حل نشد دوباره تاپیک بگذار تا جواب رو بنویسم

m3raj_3
دوشنبه 09 آبان 1390, 10:09 صبح
جواب رو کامل ویرایش کردم اگه مشکل حل نشد دوباره تاپیک بگذار تا جواب رو بنویسم

سلامممنون بابت جوابتاما یه بحثی است
شماسوال من رو فراموشکنید و روی این سوال بی زحمت زوم کنید
من 10 تا ساعت دارم که میخوام جمعشونکنه و بگه چند ساعت میشه
بدون احتساب روز و سالو ماه و اینا
یعنی مثلا 10 ساعت +20 ساعت +12:20 دقیقه رو جمع کنه بگه میشه 42 ساعت و 20 دقیقه
42:20 دقیقه

mohammadriano
دوشنبه 09 آبان 1390, 10:26 صبح
عزیز من اگه دو ساعت رو می خواهسد با هم جمع کنید که به روز شمار عددی اضافه نکند؟
a =left$(time)'o برای محاسبه ساعت
b =right$(time)'o برای محاسبه دقیقه
i=left$(time)'o برای محاسبه ساعت
j =right$(time)'o برای محاسبه دقیقه
if j +b >60 then
a=a+1
j=j+b-60
else
j=j+b
end if
F = a+ i
FF as string
FF = a +":" + j
موفق باشی

M.T.P
دوشنبه 09 آبان 1390, 11:52 صبح
نتیجه کد زیر میشه 10 ساعت...


Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim IntSeconds As Integer
Dim StrTime As String

IntSeconds += TimeToSecond("1:30")
IntSeconds += TimeToSecond("5:30")
IntSeconds += TimeToSecond("3:00")

StrTime = SecondToTimeFormat(IntSeconds)
MessageBox.Show(StrTime)
End Sub

Function TimeToSecond(ByVal TheTime As String) As Integer
Dim IntResult As Integer

IntResult += DateAndTime.Hour(TheTime) * 3600
IntResult += DateAndTime.Minute(TheTime) * 60
IntResult += DateAndTime.Second(TheTime)

Return IntResult
End Function

Function SecondToTimeFormat(ByVal TheSecond As Integer) As String
Dim HH As Integer
Dim MM As Integer
Dim SS As Integer
Dim Result As String

SS = (TheSecond Mod 60)
MM = (TheSecond \ 60) Mod 60
HH = (TheSecond \ 60) \ 60

If HH > 0 Then SecondToTimeFormat = Format$(HH, "##") & ":" & Format$(MM, "00") & ":" & Format$(SS, "00") : Exit Function
If MM > 0 Then SecondToTimeFormat = Format$(MM, "##") & ":" & Format$(SS, "00") : Exit Function
Result = Format$(SS, "##")
Return Result
End Function

m3raj_3
سه شنبه 10 آبان 1390, 11:52 صبح
نتیجه کد زیر میشه 10 ساعت...


Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim IntSeconds As Integer
Dim StrTime As String

IntSeconds += TimeToSecond("1:30")
IntSeconds += TimeToSecond("5:30")
IntSeconds += TimeToSecond("3:00")

StrTime = SecondToTimeFormat(IntSeconds)
MessageBox.Show(StrTime)
End Sub

Function TimeToSecond(ByVal TheTime As String) As Integer
Dim IntResult As Integer

IntResult += DateAndTime.Hour(TheTime) * 3600
IntResult += DateAndTime.Minute(TheTime) * 60
IntResult += DateAndTime.Second(TheTime)

Return IntResult
End Function

Function SecondToTimeFormat(ByVal TheSecond As Integer) As String
Dim HH As Integer
Dim MM As Integer
Dim SS As Integer
Dim Result As String

SS = (TheSecond Mod 60)
MM = (TheSecond \ 60) Mod 60
HH = (TheSecond \ 60) \ 60

If HH > 0 Then SecondToTimeFormat = Format$(HH, "##") & ":" & Format$(MM, "00") & ":" & Format$(SS, "00") : Exit Function
If MM > 0 Then SecondToTimeFormat = Format$(MM, "##") & ":" & Format$(SS, "00") : Exit Function
Result = Format$(SS, "##")
Return Result
End Function

خیلی عالی بود خدا خیرت بده مرسسی واقعایه سوال دیگه
میشه یه لطفی بکنید و در مورد 5 تا خط اخر یه توضیحاتی بدید