Вычислить разницу времени между интервалами до миллисекунд

Программирование на Active Server Pages и VBScript.
ALX_2002
Мега гуру
Мега гуру
 
Сообщения: 2006
Зарегистрирован: 25.11.2002 (Пн) 20:03

Вычислить разницу времени между интервалами до миллисекунд

Сообщение ALX_2002 » 15.06.2018 (Пт) 22:47

Господа, понимаю, что вопрос странный. Так как вроде бы очевиден до безобразия. Но чёт затупил, как говорится.
Пытаюсь для лога вывести разницу между началом и концом процесса и показать её в формате YYYY-MM-DD HH:NN:SS.III

YYYY - кол-во лет
MM - месяцов
DD - дней
HH - часов
NN - минут
SS - секунд
III - миллисекунд

Обычная дата внутри не содержит миллисекунд, если я правильно понял. Поэтому пытаюсь использовать функцию timer.
Никак не могу сообразить как правильно код наваять. Помогите советом или кодом, пожалуйста. )

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16096
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Re: Вычислить разницу времени между интервалами до миллисеку

Сообщение Хакер » 15.06.2018 (Пт) 22:51

Есть уже какой-то готовый лог, который нужно обработать и в котором используются таймстампы формата YYYY-MM-DD HH:NN:SS.III?

Или ты сам хочешь такой лог формировать?
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

ALX_2002
Мега гуру
Мега гуру
 
Сообщения: 2006
Зарегистрирован: 25.11.2002 (Пн) 20:03

Re: Вычислить разницу времени между интервалами до миллисеку

Сообщение ALX_2002 » 15.06.2018 (Пт) 23:10

Неа. Готово нет. Пытаюсь соорудить нечто вроде такого.

Reset - сброс счетчика
GetTime - возврат разницы в нужном формате.

Код: Выделить всё
Option Explicit

Dim objTimer
Set objTimer = new clsTimer

WScript.Sleep 1000

MsgBox objTimer.GetTime
objTimer.Reset

WScript.Sleep 100

MsgBox objTimer.GetTime

Class clsTimer
   Private sngTimer
   Private Sub Class_Initialize()
      Reset
   End Sub
   
   Public Default Function GetTime()
      GetTime = Int((Timer - sngTimer) * 1000)
   End Function
   
   Sub Reset()
      sngTimer = Timer
   End Sub
End Class

ALX_2002
Мега гуру
Мега гуру
 
Сообщения: 2006
Зарегистрирован: 25.11.2002 (Пн) 20:03

Re: Вычислить разницу времени между интервалами до миллисеку

Сообщение ALX_2002 » 16.06.2018 (Сб) 0:25

Наваял криво косо. Самому стыдно, но пока не знаю как поправить. Буду крайне рад рекомендациям по упрощению и оптимизации

Код: Выделить всё
Option Explicit

Dim objTimer
Set objTimer = new clsTimer

WScript.Sleep 2000

MsgBox objTimer.GetTime

Class clsTimer
   Private mDate, mTimer
   
   Private Sub Class_Initialize()
      Reset
   End Sub
   
   Public Default Function GetTime()
      Dim currentDate, years, months, days, timerDiff, milliseconds, seconds, minutes, hours
      
      currentDate = Date
      years = DateDiff("yyyy",currentDate,mDate)
      months = DateDiff("m",currentDate,mDate)
      days = DateDiff("d",currentDate,mDate)
      
      timerDiff = Timer - mTimer
      
      milliseconds   = Int((timerDiff - Int(timerDiff)) * 1000)
      seconds         = timerDiff mod 60
      timerDiff      = Int(timerDiff / 60)
      minutes         = timerDiff mod 60
      hours         = Int(timerDiff / 60)
   
      GetTime = Join(Array( _
         LZ(years,3), _
         LZ(months,2), _
         LZ(days,2) _
      ),"-") & " " & _
      Join(Array(_
         LZ(hours, 2), _
         LZ(minutes, 2), _
         LZ(seconds, 2) _
      ),":") & "." & LeftPad(milliseconds,3)
   End Function
   
   Private Function LZ(value, count)
      LZ = String(count - Len(value), "0") & value
   End Function
   
   Sub Reset()
      mDate = Date
      mTimer = Timer
   End Sub
End Class


Вернуться в ASP и VBScript

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 2

    TopList