Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут
закрыты.
Читайте
требования к создаваемым темам.
-
Urvin
-
- Постоялец

-

-
- Сообщения: 518
- Зарегистрирован: 04.06.2003 (Ср) 10:47
- Откуда: с Марса
-
Urvin » 06.08.2003 (Ср) 16:40
Пусть у меня есть количество миллисекунд (507404120819) как мне из этого числа сделать часы - мин - сек?
12:33:44
Не так страшен русский танк, как его пьяный экипаж
-
A.A.Z.
-
- Член-корреспондент академии VBStreets

-
-
- Сообщения: 3035
- Зарегистрирован: 30.06.2003 (Пн) 13:38
-
A.A.Z. » 06.08.2003 (Ср) 16:57
Милисекунды в данном случае - тысячные доли или десятые?
Время здесь не получается: 14094,5589116389 - почему-то у меня именно столько часов получилось при делении 507404120819 на 36000000.

Последний раз редактировалось
A.A.Z. 06.08.2003 (Ср) 17:43, всего редактировалось 1 раз.
Нет меня больше
-
skiperski
-
- Идеолог

-

-
- Сообщения: 1386
- Зарегистрирован: 25.06.2002 (Вт) 15:52
skiperski » 06.08.2003 (Ср) 17:06
- Код: Выделить всё
Option Explicit
Public Function ms2Date(ByVal ms As Single) As Date
ms2Date = CDate(ms / 86400000) '86400000 = 24 * 60 * 60 * 1000
End Function
Public Function test(ByVal ms As Double)
Debug.Print Format$(ms2Date(ms), "hh\:nn\:ss")
End Function
Immediate:
- Код: Выделить всё
?test(507404120819 )
17:35:24
?ms2Date(507404120819 )
28.01.1916 17:35:24
-
A.A.Z.
-
- Член-корреспондент академии VBStreets

-
-
- Сообщения: 3035
- Зарегистрирован: 30.06.2003 (Пн) 13:38
-
A.A.Z. » 06.08.2003 (Ср) 17:07
Браво, skiperski! Я бы (честно, без усмешек) не догадался.

Нет меня больше
-
alibek
-
- Большой Человек

-
-
- Сообщения: 14205
- Зарегистрирован: 19.04.2002 (Пт) 11:40
- Откуда: Russia
alibek » 06.08.2003 (Ср) 17:28
Код skiperski покажет только время, т.е. если получится 25 часов, то он отобразит 1 час.
- Код: Выделить всё
Sub CalcTime(ByVal Milliseconds As Double, Optional ByRef retHours As Long, Optional ByRef retMinutes As Long, Optional ByRef retSeconds As Long)
retSeconds = Fix(Milliseconds / 1000)
retMinutes = Fix(retSeconds / 60)
retSeconds = retSeconds Mod 60
retHours = Fix(retMinutes / 60)
retMinutes = retMinutes Mod 60
End Sub
Lasciate ogni speranza, voi ch'entrate.
-
Urvin
-
- Постоялец

-

-
- Сообщения: 518
- Зарегистрирован: 04.06.2003 (Ср) 10:47
- Откуда: с Марса
-
Urvin » 06.08.2003 (Ср) 19:17
Спасибо! Да вечно преклонен буду!
Ведь никто не поверит, что не догадался...
Не так страшен русский танк, как его пьяный экипаж
-
alibek
-
- Большой Человек

-
-
- Сообщения: 14205
- Зарегистрирован: 19.04.2002 (Пт) 11:40
- Откуда: Russia
alibek » 07.08.2003 (Чт) 9:39
Кстати, я подумал и решил что код корявый

Overflow может возникать. Лучше так:
- Код: Выделить всё
Sub CalcTime(ByVal Milliseconds As Double, Optional ByRef retHours As Integer, Optional ByRef retMinutes As Integer, Optional ByRef retSeconds As Integer)
Milliseconds = Fix(Milliseconds/1000)
retHours = Fix(Milliseconds/(60*60))
Milliseconds = Milliseconds - retHours*(60*60)
retMinutes = Fix(Milliseconds/60)
retSeconds = Milliseconds - retMinutes*60
End Sub
Lasciate ogni speranza, voi ch'entrate.
Вернуться в Visual Basic 1–6
Кто сейчас на конференции
Сейчас этот форум просматривают: AhrefsBot, SemrushBot, Yandex-бот и гости: 3