Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[3.135.183.187] |
|
Сообщ.
#1
,
|
|
|
Всем привет!
Помогите решить проблемку. Позарез нада. Есть количество секунд (32 бита, то биш лонг) прошедших с 00:00:00 01.01.1900, их надо преобразовать в дату и время, т.е. в итоге должно получится примерно слующее 2004.10.23 09:48:19. Пасиба. |
Сообщ.
#2
,
|
|
|
тип данных Дате храниться как число с плавующей точкой(толькл не помню Сингле или Доубле),те тебе нужен некий коэфициент перевода,1 день в цифре равен 1,1 час-1/24 или примерно 0,041666; 1 минута -1/1440 или примерно 0,00069 и наконец одна секунда 1/86400 или в десятичной примерно 0,0000157
Пример : Dim MY_TIME As Date 'НАчальная точка отсчета Dim END_TIME As Date 'Конечная точка отсчета Dim TEMP As Single 'Количество пройденного времени If IsNumeric(Text1) = False Then Exit Sub Dim SECOND_COL As Long 'Количество секунд MY_TIME = CDate("1.02.2000") 'Начали считать с 1 февраля 2000 года SECOND_COL = Text1 'Прошло 14589 секунд TEMP = SECOND_COL / 86400 END_TIME = MY_TIME + TEMP 'Такое время будет спустя 14589 секунд Debug.Print "Пршло лет: " & vbTab & DateDiff("YYYY", MY_TIME, END_TIME) Debug.Print "Пршло месяцев:" & vbTab & DateDiff("m", MY_TIME, END_TIME) Debug.Print "Пршло дней: " & vbTab & DateDiff("d", MY_TIME, END_TIME) Debug.Print "Пршло часов: " & vbTab & DateDiff("h", MY_TIME, END_TIME) Debug.Print "Пршло минут: " & vbTab & DateDiff("n", MY_TIME, END_TIME) Debug.Print "Пршло секунд: " & vbTab & DateDiff("s", MY_TIME, END_TIME) Это надо было? |
Сообщ.
#3
,
|
|
|
GVA,
Option Explicit Private Sub formir() Dim local_time As Long Dim l_time As Single Dim l_hour As Long, l_min As Long, l_sec As Long Dim l_msec As Single, s As String l_time = Timer Label1.Caption = "Секунды и мил.сек - " & l_time local_time = Int(l_time) l_msec = Round(l_time - Int(l_time), 2) ' мил.сек If local_time / 3600 >= 1 Then ' часы l_hour = Int(local_time / 3600) local_time = local_time - l_hour * 3600 End If If local_time / 60 >= 1 Then ' минуты l_min = Int(local_time / 60) local_time = local_time - l_min * 60 End If l_sec = Int(local_time) ' сек s = Right("0" & Trim(Str(l_hour)), 2) & ":" & _ Right("0" & Trim(Str(l_min)), 2) & ":" & _ Right("0" & Trim(Str(l_sec)), 2) & _ Trim(Str(l_msec)) Label2.Caption = "Сформированное время - " & s End Sub Private Sub Command1_Click() Call formir End Sub Private Sub Form_Load() Command1.Caption = "Показать" Label1.AutoSize = True: Label2.AutoSize = True Label1.Caption = "Секунды и мил.сек - " Label2.Caption = "Сформированное время - " Call formir End Sub Типа этого, только для дня, мес, года ещё надо сделать. |