PDA

View Full Version : سوال: تابع اختلاف میان دو زمان برحسب ساعت و دقیقه HH:MM



ali190
دوشنبه 09 آبان 1390, 21:19 عصر
باسلام و عرض خسته نباشید
دوستان من دنبال تابعی می گردم که بتونه اختلاف مثلاً بین دو ساعت 13:30 و 16:45 بصورت 3:15 بگردونه
ممنون میشم کمکم کنید
خیلی خیلی ممنون
یاعلی

امین مستانی
دوشنبه 09 آبان 1390, 22:15 عصر
سلام

با استفاده از تابع زیر میتونید این کار رو بکنید :

DateDiff(interval, date1, date2[, firstdayofweek[, firstweekofyear]])


توضیحات کامل در اینجا ببینید . (http://www.vb6.us/tutorials/learn-howto-use-visual-basic-datediff-function)

موفق باشید

ali190
دوشنبه 09 آبان 1390, 23:31 عصر
سلام
ممنون از راهنماییت
ولی تابع DateDiff نمیوتنه اون چیزی رو که من میخوام بهم بده
این تابع اختلاف میان دو ساهت رو بر حسب یک واحد مشخص از زمان (ساعت ، دقیقه ، ثانیه و ...) بیان میکنه ولی من فرمت HH:MM رو نیاز دارم
این تابع نمیتونه این حالت رو برگشت بده

mr-adler
دوشنبه 09 آبان 1390, 23:57 عصر
سلام
با اجازه شما...
البته اگه خوشتون نیومد میتونید ندید بگیرید:

Dim a, b, c, d, hh, mm
Private Sub Command1_Click()
a = Left(Text1.Text, 2)
b = Left(Text2.Text, 2)
c = Right(Text1.Text, 2)
d = Right(Text2.Text, 2)
If Val(a) >= Val(b) Then
hh = Val(a) - Val(b)
Else
hh = Val(b) - Val(a)
End If
If Val(c) >= Val(d) Then
mm = Val(c) - Val(d)
Else
mm = Val(d) - Val(c)
End If
Print hh & ":" & mm
End Sub


البته این رو هم بگم که سوالتون یه ابهام کوچیک داره و اونم اینه که اختلاف بین دو زمان مختلف(از روی ساعت به دوشکل بدست میاد)
مثلا 12:00 & 03:00 رو در نظر بگیرید جواب به دو صورت زیر است:
1. 03:00
2. 09:00
این در زمانی هست که ساعت رو 12 ساعته در نظر بگیرید .(مثل گوشی های موبایل و ...)
و اگه بازه زمانی ساعتتون 24 ساعت هم باشه قضیه تقریبا به همین شکله که خودتون بهتر از من میدونید...

موفق باشید...

M.T.P
سه شنبه 10 آبان 1390, 00:38 صبح
باسلام و عرض خسته نباشید
دوستان من دنبال تابعی می گردم که بتونه اختلاف مثلاً بین دو ساعت 13:30 و 16:45 بصورت 3:15 بگردونه
ممنون میشم کمکم کنید
خیلی خیلی ممنون
یاعلی



Dim IntSecond As Integer
Dim StrTime As String
IntSecond = DateDiff("s", "13:30", "16:45")
StrTime = TimeSerial(0, 0, IntSecond)
Call MsgBox(StrTime, vbInformation)

M.T.P
سه شنبه 10 آبان 1390, 00:54 صبح
یه نکته اینکه خروجی کد بالا بصورت HH:MM:SS هست و اگه خواستید ثانیه رو در نظر نگیرید میشه:


Dim IntSecond As Integer
Dim StrTime As String
IntSecond = DateDiff("s", "13:30", "16:45")
StrTime = TimeSerial(0, 0, IntSecond)
StrTime = Format$(StrTime, "HH:MM")
Call MsgBox(StrTime, vbInformation)

M.T.P
سه شنبه 10 آبان 1390, 12:24 عصر
دوستان من کدهای بالا رو اصلاح می کنم چون تا اختلاف 10 ساعت بیشتر جواب نمیده.
کد زیر کامل هست:


Private Sub Command1_Click()
Dim IntSecond As Long
Dim StrTime As String
IntSecond = DateDiff("s", "00:30", "23:45")
StrTime = SecondToTimeFormat(IntSecond)
Call MsgBox(StrTime, vbInformation)
End Sub

Function SecondToTimeFormat(BvlSecond As Long) As String
Dim HH As Long
Dim MM As Long
Dim SS As Long
Dim Result As String

SS = (BvlSecond Mod 60)
MM = (BvlSecond \ 60) Mod 60
HH = (BvlSecond \ 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
SecondToTimeFormat = Format$(SS, "##")
End Function

niko2008
پنج شنبه 12 آبان 1390, 12:37 عصر
دوستان من کدهای بالا رو اصلاح می کنم چون تا اختلاف 10 ساعت بیشتر جواب نمیده.
کد زیر کامل هست:


Private Sub Command1_Click()
Dim IntSecond As Long
Dim StrTime As String
IntSecond = DateDiff("s", "00:30", "23:45")
StrTime = SecondToTimeFormat(IntSecond)
Call MsgBox(StrTime, vbInformation)
End Sub

Function SecondToTimeFormat(BvlSecond As Long) As String
Dim HH As Long
Dim MM As Long
Dim SS As Long
Dim Result As String

SS = (BvlSecond Mod 60)
MM = (BvlSecond \ 60) Mod 60
HH = (BvlSecond \ 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
SecondToTimeFormat = Format$(SS, "##")
End Function

سلام دوست عزیز این اختلاف زمانی رو برای دو روز مختلف مثلا از امروز ساعت 13:45 تا فردا ساعت 14:15 چگونه میتوان محاسبه کرد؟؟؟؟؟؟؟؟؟؟؟

M.T.P
پنج شنبه 12 آبان 1390, 23:30 عصر
سلام دوست عزیز این اختلاف زمانی رو برای دو روز مختلف مثلا از امروز ساعت 13:45 تا فردا ساعت 14:15 چگونه میتوان محاسبه کرد؟؟؟؟؟؟؟؟؟؟؟

همون کد منتها به جای ساعت ، تاریخ و ساعت هردو رو با هم وارد کنید.


IntSecond = DateDiff("s", "2010/11/02 00:30", "2010/11/03 23:45")

joker_pok
شنبه 14 آبان 1390, 10:29 صبح
من یه راه حل دیگه بهت یاد بدم خیلی راحت یه DataGrid بزار رو صفحه فرمت ستون ها رو بزار روی hh:mm وقتی که خودت بگی datagrid1.colums(1)-datagrid1.colums(2) خودش خودکار تفریق می کنه البته یادت نره فرمت هاشون باید از نوع hh:mm حتما باشه ها و الا خطا میگیره