Время 507404120819

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
Urvin
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 518
Зарегистрирован: 04.06.2003 (Ср) 10:47
Откуда: с Марса

Время 507404120819

Сообщение Urvin » 06.08.2003 (Ср) 16:40

Пусть у меня есть количество миллисекунд (507404120819) как мне из этого числа сделать часы - мин - сек?
12:33:44
Не так страшен русский танк, как его пьяный экипаж

A.A.Z.
Член-корреспондент академии VBStreets
Член-корреспондент академии 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
Член-корреспондент академии VBStreets
 
Сообщения: 3035
Зарегистрирован: 30.06.2003 (Пн) 13:38

Сообщение A.A.Z. » 06.08.2003 (Ср) 17:07

Браво, skiperski! Я бы (честно, без усмешек) не догадался. :shock:
Нет меня больше

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

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

Сейчас этот форум просматривают: Yandex-бот и гости: 4

    TopList