Sun07 писал(а):Мне нужно сравнить два времени - системное (текущее) и в виде строки, например, "15:40" (часы и минуты). Как это сделать?
If Time > CDate("15:40") Then
Dim fTemp As Double
fTemp = CDate("15:40")
Private Function DiapazonTime(Ishod As String, Begin As String, Finish As String) As Boolean
'Определение лежит ли время Ishod в диапазоне между Begin и Finish, например:
'Ishod = "22.02.06 12:00:00": Begin = "21.02.06 06:00:00": Finish = "24.02.06 10:00:00"
'Ishod - лежит в этом диапазоне времени. Функция определяет учитывая дату и время,
'а также учитывая кол-во дней в месяцах, высокосные года итп итд... :)
Dim a As Long, b As Long
Dim secIshodTime As Double, secBeginTime As Double, secFinishTime As Double
Dim probel As Long, i_h As Long, i_m As Long, i_s As Long, b_h As Long, b_m As Long, _
b_s As Long, f_h As Long, f_m As Long, f_s As Long
Dim IshodTime As String, BeginTime As String, FinishTime As String
'Находим разницу в днях между исходным и начальным диапазоном
a = Abs(DateDiff("d", CDate(Ishod), CDate(Begin)) * 24 * 60 * 60)
'И между начальным и конечным
b = Abs(DateDiff("d", CDate(Begin), CDate(Finish)) * 24 * 60 * 60)
'DateDiff учитывает особенности определённого месяца, года и возвращает верную
'разницу между датами в днях, далее разница * 24 * 60 * 60, т.е. переводим кол-во
'дней в секунды
'Вырезаем из всей строки время
probel = InStr(1, Ishod, " ", 1):
If probel > 0 Then IshodTime = Trim$(Mid$(Ishod, probel, Len(Ishod)))
probel = InStr(1, Begin, " ", 1)
If probel > 0 Then BeginTime = Trim$(Mid$(Begin, probel, Len(Begin)))
probel = InStr(1, Finish, " ", 1)
If probel > 0 Then FinishTime = Trim$(Mid$(Finish, probel, Len(Finish)))
'Разбиваем часы, минуты и секунды на отдельные переменные
i_h = Val(Split(IshodTime, ":")(0)): b_h = Val(Split(BeginTime, ":")(0))
i_m = Val(Split(IshodTime, ":")(1)): b_m = Val(Split(BeginTime, ":")(1))
i_s = Val(Split(IshodTime, ":")(2)): b_s = Val(Split(BeginTime, ":")(2))
f_h = Val(Split(FinishTime, ":")(0)): f_m = Val(Split(FinishTime, ":")(1))
f_s = Val(Split(FinishTime, ":")(2))
'Теперь всё переводим в секунды
secIshodTime = (i_h * 60 * 60) + (i_m * 60) + i_s
secBeginTime = (b_h * 60 * 60) + (b_m * 60) + b_s
secFinishTime = (f_h * 60 * 60) + (f_m * 60) + f_s
'Теперь прибавляем к секундам разницы даты, секунды разности диапазонов времени
a = a + (secIshodTime - secBeginTime)
b = b + (secFinishTime - secBeginTime)
If a <= b Then 'И если начальное меньше или равно разницы диапазона
DiapazonTime = True 'тогда дата и время лежит в диапазоне
Else 'а иначе
DiapazonTime = False 'не лежит
End If ' :)
'Copyright © 2006 | HACKER.
End Function
Private Function DiapazonTime(Ishod As String, Begin As String, Finish As String) As Boolean
DiapazonTime = (CDate(Ishod) >= CDate(Begin)) And (CDate(Ishod) <= CDate(Finish))
End Function
Сейчас этот форум просматривают: AhrefsBot и гости: 55