А можно DateTimePicker использовать нестандартно? Например для ввода интервала времени. - VB
Формулировка задачи:
Т.е. например
Но хочу отображать их по человечески, т.е. h:mm:ss.
Пример: процесс должен происходить следующий раз через случайное время (случайный интервал задан границами)
Пример кода (тупого для иллюстрации идеи):
В данном примере, если например ввести
TextIntervalFrom.Text=10
TextIntervalTo.Text=20,
то код рассчитает случайную дельту (в секундах) между 10-ю минутами и 20-ю минутами
прибавит этот интервал к тек. времени и получим время след. события
Если допустим 10/20 минут,
то для отображения/ввода могу использовать UpDown где пользователь задает
Но код то работает с секундами, т.е. способен на большее.
Но если надо например задать интервал между 10 и 30 секундами
Или скажем между 2-мя и 3-мя часами.
Т.е. желательно форматировать текст в
0 h 20 min 00 sec
2 h 10 min 00 sec
0 h 01 min 30 sec
Сутки наверно не нужны (можно ограничить 24 ч),
хотя для общности возможность
47 h 00 min 00 sec
не повредит
Высчитывать минуты, часы и секунды самому -да еще чтоб можно было их красиво менять в контроле - умучаешься.
Если дело -дрянь, то оставлю минуты (напр. 0-9999) +UpDown и иже с ним.
Но все же м.б.
(интеллектуально работать с переменной, содержащей число секунд)
в переменной хранятся секунды
.Но хочу отображать их по человечески, т.е. h:mm:ss.
Пример: процесс должен происходить следующий раз через случайное время (случайный интервал задан границами)
Пример кода (тупого для иллюстрации идеи):
В данном примере, если например ввести
TextIntervalFrom.Text=10
TextIntervalTo.Text=20,
то код рассчитает случайную дельту (в секундах) между 10-ю минутами и 20-ю минутами
прибавит этот интервал к тек. времени и получим время след. события
Если допустим 10/20 минут,
то для отображения/ввода могу использовать UpDown где пользователь задает
грубо
минуты.Но код то работает с секундами, т.е. способен на большее.
Но если надо например задать интервал между 10 и 30 секундами
Или скажем между 2-мя и 3-мя часами.
Т.е. желательно форматировать текст в
0 h 20 min 00 sec
2 h 10 min 00 sec
0 h 01 min 30 sec
Сутки наверно не нужны (можно ограничить 24 ч),
хотя для общности возможность
47 h 00 min 00 sec
не повредит
Высчитывать минуты, часы и секунды самому -да еще чтоб можно было их красиво менять в контроле - умучаешься.
Если дело -дрянь, то оставлю минуты (напр. 0-9999) +UpDown и иже с ним.
Но все же м.б.
можно ли приспособить DTPicker под это дело
?(интеллектуально работать с переменной, содержащей число секунд)
Решение задачи: «А можно DateTimePicker использовать нестандартно? Например для ввода интервала времени.»
textual
Листинг программы
Private Sub CommandGetSec_Click() TextSec.Text = Hour(DTPicker1.Value) * 3600 + Minute(DTPicker1.Value) * 60 + Second(DTPicker1.Value) End Sub Private Sub CommandSetSec_Click() Dim MyTime As Date MyTime = TimeFromSeconds(CLng(Val(TextSec.Text))) DTPicker1.Value = MyTime End Sub Private Function TimeFromSeconds(the_sec As Long) As Date Dim s_hour As Long Dim s_min As Long Dim s_sec As Long s_hour = the_sec \ 3600 '3600sec s_min = (the_sec Mod 3600) \ 60 '60sec s_sec = (the_sec Mod 60) 'Можно конечно TimeSerial(0, 0, the_sec), но это не будет работать при выходе за пределы Integer '23:59:59 == 86399 sec TimeFromSeconds = TimeSerial(s_hour, s_min, s_sec) End Function
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д