![]()  | 
	
 
  | 
		
			
  | 	
	
	
		
		|||||||
| Регистрация | << Правила форума >> | 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  
			
			
			
			
		 
		
		
	 | 
||||
		
		
  | 
||||
| 
	
	
		
			
			 Ну да, как-то так. 
		
	
		
		
		
		
			
		
		
		
		
	
		
		
	
	
	 |