![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#1
|
||||
|
||||
|
Приветствую, встала задача прибавления к текущей дате произвольного числа (миллисекунд), так вот вопрос в том как это сделать ?
Так как читал что с датами можно работать как с обычными числами, то пробывал сделать так: Код:
ShowMessage(DateTimeToStr(now + (1000 * 60 * 5)));//те к текущей дате я прибавил 5 минут Но результат неверен, ессно опыта таких манипуляций с датами нет ![]() |
|
#2
|
|||
|
|||
|
Ну да, т.к. время хранится справа от точки. Т.е. прибавление 5 минут будет так:
Код:
NewTime := Now + 5 / (24 * 60 * 60); |
|
#3
|
||||
|
||||
|
Цитата:
Спасибо большое, учту |
|
#4
|
||||
|
||||
|
Еще уточню, а если мне надо прибавить 2 часа, то это будет выглядеть так?
Код:
now + 120 / (24 * 60 * 60); |
|
#5
|
|||
|
|||
|
Нверное. Но проще просто так:
Код:
NewDate := Now + 2 / 24; |
|
#6
|
||||
|
||||
|
Или
Код:
NewDate := Now + 1 / 12; P.S. Пофлужу по темам, хочу счётчик 777))) |
|
#7
|
||||
|
||||
|
Значения все таки получаются разные:
Код:
now + 120 / (24 * 60 * 60);now + 2 / 24 Так что же все таки правильно? Мне нужно универсальную функцию, которая позволяет прибавлять к текущей дате как время, так и часы, что то в этом духе: Код:
function TForm1.NextWorkTime: TDateTime;
begin
Result := 0;
case ComboBox1.ItemIndex of
0:
Result := now + 10 / (24 * 60 * 60);
1:
Result := now + 15 / (24 * 60 * 60);
2:
Result := now + 30 / (24 * 60 * 60);
3:
Result := now + 60 / (24 * 60 * 60);
4:
Result := now + 120 / (24 * 60 * 60);
5:
Result := now + 180 / (24 * 60 * 60);
end;
end; |
|
#8
|
||||
|
||||
|
Код:
var hh, mm, ss, msec: word; begin hh := 2; // 2 часа mm := 30; // 30 минут ss := 0; // 0 секунд msec := 0; // 0 миллисекунд Result := now + EncodeTime(hh, mm, ss, msec); end; Последний раз редактировалось PhoeniX, 22.05.2010 в 16:40. |
|
#9
|
||||
|
||||
|
О, точно, совсем забыл про эту функцию, тогда все манипуляции с временем будут выглядеть так?
Код:
function PrepareTime(hh: word; mm: word; ss: word = 0; msec: word = 0): String;
begin
Result := DateTimeToStr(now + EncodeTime(hh, mm, ss, msec));
end;
function TForm1.NextWorkTime: String;
begin
Result := '';
case ComboBox1.ItemIndex of
0:
Result := PrepareTime(0, 10); // 10 минут
1:
Result := PrepareTime(0, 15); // 15 минут
2:
Result := PrepareTime(0, 30); // 30 минут
3:
Result := PrepareTime(1, 0); // 1 час
4:
Result := PrepareTime(2, 0); // 2 часа
5:
Result := PrepareTime(3, 0); // 3 часа
end;
end;Последний раз редактировалось Vayrus, 22.05.2010 в 13:09. |
|
#10
|
||||
|
||||
|
Ну да, как-то так.
|