 
			
				19.03.2014, 17:26
			
			
			
		  
	 | 
 
	
		
		
		
			  | 
			
			
				
				
				 Профессор 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 24.09.2013 
					
					
					
						Сообщений: 1,436
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	
	
	
		
		
		
		
		
	
 
	| 
		
			 Цитата: 
		
	 | 
 
	| 
		И этим мне нужно оперировать так?
	 | 
 
	
 
 http://javascript.ru/Date
	
 
	| 
		
			 Цитата: 
		
	 | 
 
	
		Аргументы 
 
dateVal- Если параметр является числовым, то он интерпретируется как количество миллисекунд от 1-Янв-1970 00:00.
 
- Если строкой, то она разбирается и интерпретируется как дата по стандартным правилам Date.parse.
 
 
	 | 
 
	
 
 Методы объекта date в статье по ссылке выше подробно перечислены.  
		
	
		
		
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				19.03.2014, 17:31
			
			
			
		  
	 | 
 
	
		
		
		
			
			| 
			
				
				
				 Интересующийся 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 19.03.2014 
					
					
					
						Сообщений: 23
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	
	
	
		
		
		
		
		
	
 
	
		
			Сообщение от Erolast
			 
		
	 | 
 
	
		
$unix_date = strtotime($date_from_db);
$unix_time = strtotime($time_from_db);
        $day = date ('d', $unix_date);
        $month = date ('n', $unix_date);
        $year = date('Y', $unix_date);
        $hour = date ('H', $unix_time);
        $minute = date ('i', $unix_time);
        $second = date ('s', $unix_time);
echo "
<td>
<span id='auct_timer'>
         
</span>
         
<script language='javascript'>
countdown(".$year.",".$month.",".$day.",".$hour.",".$minute.",".$second.")
</script>
</td>
";
 
Код же кривой - кавычки одинакового типа друг в друга вкладываешь.
	 | 
 
	
 
 Это где?  
		
	
		
		
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				19.03.2014, 17:32
			
			
			
		  
	 | 
 
	
		
		
		
			  | 
			
			
				
				
				 Профессор 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 24.09.2013 
					
					
					
						Сообщений: 1,436
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	
	
	
		
		
		
		
		
	
 
	| 
		
			 Цитата: 
		
	 | 
 
	| 
		countdown(".$year."
	 | 
 
	
 
 Здесь.  
		
	
		
		
		
		
		
		
		
						  
				
				Последний раз редактировалось Erolast, 19.03.2014 в 17:35.
				
				
			
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				19.03.2014, 17:38
			
			
			
		  
	 | 
 
	
		
		
		
			
			| 
			
				
				
				 Интересующийся 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 19.03.2014 
					
					
					
						Сообщений: 23
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	
	
	
		
		
		
		
		Это я понимаю. Почему числа, переданные в функцию меняются?  
		
	
		
		
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				19.03.2014, 17:40
			
			
			
		  
	 | 
 
	
		
		
		
			  | 
			
			
				
				
				 Профессор 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 24.09.2013 
					
					
					
						Сообщений: 1,436
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	
	
	
		
		
		
		
		
	
 
	| 
		
			 Цитата: 
		
	 | 
 
	| 
		Это я понимаю. Почему числа, переданные в функцию меняются?
	 | 
 
	
 
 Потому-что конструктор Date при обработке UNIX-времени почему-то работает с миллисекундами, а не с секундами. Умножай на 1000.
 
В итоге код таким должен быть:
 
<?
$t=time();
echo "
<script>
var unixtime = parseInt('$t')*1000;
var dateObj = new Date(unixtime);
alert('Сейчас '+dateObj.getHours()+' часов!');
</script>
"
?>
 
		
	
		
		
		
		
		
		
		
						  
				
				Последний раз редактировалось Erolast, 19.03.2014 в 17:47.
				
				
			
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				19.03.2014, 17:51
			
			
			
		  
	 | 
 
	
		
		
		
			
			| 
			
				
				
				 Интересующийся 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 19.03.2014 
					
					
					
						Сообщений: 23
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	
	
	
		
		
		
		
		Спасибо, позже надо попробовать. 
В данный момент ненавижу всё что связано с компьютером    
		
	
		
		
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				20.03.2014, 16:03
			
			
			
		  
	 | 
 
	
		
		
		
			
			| 
			
				
				
				 Интересующийся 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 19.03.2014 
					
					
					
						Сообщений: 23
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	
	
	
		
		
		
		
		Всем снова здравствуйте.  
Заработал таки таймер у меня. 
Но, проблему с выполнением нескольких таймеров так и не решил.
 
Срабатывает только  последний из всех.
 - В цикле PHP выдаются таблицы с событиями, которые произойдут в конкретные Дату и Время.
 
 - Соответственно, напротив каждого события должен висеть таймер обратного отсчёта
 
 
Моя реализация:
- Кусок кода PHP(в цикле):
 
выбираю данные из базы и применяю к ним функцию countdown() 
 
$unix_date = $row_auct_select->start_date;
		$unix_time = $row_auct_select->start_time;
		$day = date ('d', $unix_date);
		$month = date ('n', $unix_date);
		$year = date('Y', $unix_date);
		$time = date ('H:i:s', $unix_time);
echo "
<td>
<span id='$Zapros_iz_bd_(id_продукта)'>
		
</span>
<script language='javascript'>
countdown(".$unix_date.",".$unix_time.",".$Zapros_iz_bd_(id_продукта)."</script>
	
</td>
";
- Собственно, функция на JS:
 
 
function countdown(a_date,a_time,a_id)
{
	span_id = document.getElementById(a_id);
	montharray = new Array('Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec');
	auct_date = new Date(parseInt(a_date) * 1000);
	auct_time = new Date(parseInt(a_time) * 1000);
	
	var auct_year = auct_date.getYear(); if (auct_year < 1000) auct_year += 1900
    var auct_month  = auct_date.getMonth()
    var auct_day = auct_date.getDate()
    var auct_hour = auct_time.getHours()
    var auct_minute = auct_time.getMinutes()
    var auct_second = auct_time.getSeconds()
    var futurestring = montharray[auct_month]+" "+auct_day+", "+auct_year+" "+auct_hour+":"+auct_minute+":"+auct_second
  
    function calculate()
	{
		res = Date.parse(futurestring) - new Date()
                res_day = Math.floor(res/(60*60*1000*24)*1)
                res_hour = Math.floor((res%(60*60*1000*24))/(60*60*1000)*1)
                res_min = Math.floor(((res%(60*60*1000*24))%(60*60*1000))/(60*1000)*1)
                res_sec = Math.floor((((res%(60*60*1000*24))%(60*60*1000))%(60*1000))/1000*1)
			if (res > 0) 
		    {
				span_id.innerHTML = res_day+" д. "+"<br/>"+res_hour+":"+res_min+":"+res_sec
                setTimeout( calculate ,1000);
		    }
		    else
		    {
				span_id.innerHTML = "Всё проехали";
		    }
 
		
	}
	calculate();
}
- Идентификатор каждого SPAN уникальный, но всё равно работает только в последней таблице...........?
 
 - И как реализовать так, чтобы надпись по истечении времени таймера не "передёргивалась", не попадала в цикл функции JS?
 
В данной реализации надпись висит секунду, а затем наследует предыдущий таймер...  
 
Видел похожие примеры, но так и не смог добиться поставленной задачи   
		
	
		
		
		
		
		
		
	
		
			
			
	
			
			
			
			
			
				 
			
			
			
			
			
			
				
			
			
			
		 
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				20.03.2014, 17:17
			
			
			
		  
	 | 
 
	
		
		
		
			  | 
			
			
				
				
				 Профессор 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 27.05.2010 
					
					
					
						Сообщений: 33,150
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	
	
	
		
		
		
		
		Drugpunker,
  
<!DOCTYPE HTML>
<html>
<head>
  <title>Untitled</title>
  <meta charset="utf-8">
  <style type="text/css">
  div{
    background-color: #00FFFF;
     height: 50px;
     color: #0000FF;
  }
  </style>
</head>
<body>
<div id="test"></div>
<div id="test1"></div>
 <script>
     function countdown(a_date,a_time,a_id)
{
	span_id = document.getElementById(a_id);
	montharray = new Array('Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec');
	auct_date = new Date(parseInt(a_date) * 1000);
	auct_time = new Date(parseInt(a_time) * 1000);
	var auct_year = auct_date.getYear(); if (auct_year < 1000) auct_year += 1900
    var auct_month  = auct_date.getMonth()
    var auct_day = auct_date.getDate()
    var auct_hour = auct_time.getHours()
    var auct_minute = auct_time.getMinutes()
    var auct_second = auct_time.getSeconds()
    var futurestring = montharray[auct_month]+" "+auct_day+", "+auct_year+" "+auct_hour+":"+auct_minute+":"+auct_second
    function calculate(elem)
	{
	  var res = Date.parse(futurestring) - new Date()
                res_day = Math.floor(res/(60*60*1000*24)*1)
                res_hour = Math.floor((res%(60*60*1000*24))/(60*60*1000)*1)
                res_min = Math.floor(((res%(60*60*1000*24))%(60*60*1000))/(60*1000)*1)
                res_sec = Math.floor((((res%(60*60*1000*24))%(60*60*1000))%(60*1000))/1000*1)
			if (res > 0)
		    {
				elem.innerHTML = res_day+" д. "+"<br/>"+res_hour+":"+res_min+":"+res_sec
                setTimeout( function h()
{
   calculate(elem)
},1000);
		    }
		    else
		    {
				elem.innerHTML = "Всё проехали";
		    }
	}
	calculate(span_id);
}
  countdown(new Date()/1000,new Date()/1000+15,'test')
  countdown(new Date()/1000,new Date()/1000+5,'test1')
 </script>
</body>
</html>
 
		
	
		
		
		
		
		
		
	
		
			
			
	
			
			
			
			
			
				 
			
			
			
			
			
			
				
			
			
			
		 
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				20.03.2014, 17:24
			
			
			
		  
	 | 
 
	
		
		
		
			
			| 
			
				
				
				 Интересующийся 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 19.03.2014 
					
					
					
						Сообщений: 23
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	| 
	
	
		
		
		
		
		 Ох ты, круто! 
 
Пытался сделать подобное, не получилось... 
 
А если я не знаю сколько блоков будут выводиться? 
Как то в цикле вывод функций, применяемых к выводимым блокам можно сделать...на этом я и сломался... 
		
	
		
		
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				20.03.2014, 17:34
			
			
			
		  
	 | 
 
	
		
		
		
			  | 
			
			
				
				
				 Профессор 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 27.05.2010 
					
					
					
						Сообщений: 33,150
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	
	
	
		
		
		
		
		
	
 
	| 
		
			Сообщение от Drugpunker
			
		
	 | 
 
	
		А если я не знаю сколько блоков будут выводиться? 
Как то в цикле вывод функций, применяемых к выводимым блокам можно сделать
	 | 
 
	
 
 непонял ничего  
		
	
		
		
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
 
 |  
  |