Имеется строка, вида
- Код: Выделить всё
00:15:12.0156
содержащая время. После точки доли - секунды. Как и чем это преобразовать в тип Date. Проблема в том как (вернее чем) доли секунды запихать в Date.
00:15:12.0156
Dim f As Date
Dim z As String
z = "00:15:12.0156"
f = Mid$(z, 1, InStr(1, z, ".", vbBinaryCompare) - 1)
MsgBox f
jangle писал(а):а в чем проблема-то? миллисекунды отбрасывай, нафиг они нужны:
Wolfie писал(а):Да нет же, функция Date и ей аналогичная Time ставят ТЕКУЩЕЕ состояние даты и времени.
Допустим я пишу Log-File и хочу проставлять туда не просто hh:nn:ss но и милисекунды - возможно ли это? Вот о чем я спрашиваю, насчет перевода и так понятно
Public Sub Main()
Dim d As Date, dd As Date, ct As Date, f As Double, i As Integer
ct = Now
Debug.Print ct
For i = 0 To 999 Step 7
' В dd сохраним дату с тысячными секунды
dd = ct + i / 1000 / 86400
' Выводем полученную дату...
Debug.Print FormatTTT(dd), i
Next i
Debug.Print ct
End Sub
' Возвращает строку дата/время с тысячными секунды
Private Function FormatTTT(dd As Date) As String
Dim d As Date, f As Double
d = dd - Int(dd)
f = 86400 * d
f = f - Int(f)
d = Int(dd) + (d - f / 86400)
FormatTTT = Format$(d, "General Date") & "." & Right$(Format$(1000 * f, "000"), 3)
End Function
tyomitch писал(а):В Now нету тысячных секунды. Там уже округлено до секунд.
Wolfie писал(а):Да нет же, функция Date и ей аналогичная Time ставят ТЕКУЩЕЕ состояние даты и времени.
Допустим я пишу Log-File и хочу проставлять туда не просто hh:nn:ss но и милисекунды - возможно ли это? Вот о чем я спрашиваю, насчет перевода и так понятно
Public Sub Main()
Dim i As Integer, d As Date
For i = 0 To 100
d = Date + Timer / 86400 ' Вот оно!
Debug.Print FormatTTT(d), i
Next i
End Sub
Private Function FormatTTT(dd As Date) As String
Dim d As Date, f As Double
d = dd - Int(dd)
f = 86400 * d
f = f - Int(f)
d = Int(dd) + (d - f / 86400)
FormatTTT = Format$(d, "General Date") & "." & Right$(Format$(1000 * f, "000"), 3)
End Function
alibek писал(а):Я обычно Timer-Fix(Timer) использовал, помоему это проще.
alibek писал(а):Now()+Timer-Fix(Timer).
?Now()+Timer-Fix(Timer), Date + Timer / 86400
27.01.2007 2:04:23 26.01.2007 9:11:54
27.01.2007 5:32:27 26.01.2007 9:11:51
26.01.2007 12:39:49 26.01.2007 9:11:42
Andrey Fedorov писал(а):alibek писал(а):Now()+Timer-Fix(Timer).
Зацени результат:
- Код: Выделить всё
?Now()+Timer-Fix(Timer), Date + Timer / 86400
27.01.2007 2:04:23 26.01.2007 9:11:54
27.01.2007 5:32:27 26.01.2007 9:11:51
26.01.2007 12:39:49 26.01.2007 9:11:42
? Now+(Timer-Fix(Timer)) / 86400, Date + Timer / 86400
tyomitch писал(а):
- Код: Выделить всё
? Now+(Timer-Fix(Timer)) / 86400, Date + Timer / 86400
Сейчас этот форум просматривают: Google-бот, Yandex-бот и гости: 113