Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 30.12.2012, 19:49
Профессор
Отправить личное сообщение для hoax Посмотреть профиль Найти все сообщения от hoax
 
Регистрация: 20.09.2012
Сообщений: 151

Помогите доделать таймер
Всем привет!
Не могу додумать, как сделать отсчет времени, вот что получилось

var timer = setInterval(function() {

var my_timer = document.getElementById('my_timer');

// текущее время
var now = new Date;
var h = now.getHours();
var s = now.getSeconds();

// нужное время

var start = new Date(2013, 0, 1);

// "До времени х осталось : часов, минут, секунд?"

}, 1000)


Если просто ВЫЧЕСТЬ нужное время - текущенн = получится черт знает что, помоги ребят, если можно в этой функции
Ответить с цитированием
  #2 (permalink)  
Старый 30.12.2012, 21:42
Профессор
Отправить личное сообщение для hoax Посмотреть профиль Найти все сообщения от hoax
 
Регистрация: 20.09.2012
Сообщений: 151

есть мнения?
Ответить с цитированием
  #3 (permalink)  
Старый 30.12.2012, 22:17
Аватар для Hekumok
Отправить личное сообщение для Hekumok Посмотреть профиль Найти все сообщения от Hekumok
 
Регистрация: 04.06.2012
Сообщений: 513

Пойдет?
<div>Осталось <span id="my_timer"></span></div>
<script>
var date = new Date(2013, 0) ;
var now = new Date ;
var ms = date - now ;
var hour = ms/1000/60/60^0 ;
var min = (ms-hour*1000*60*60)/1000/60^0 ;
var sec = (ms-hour*1000*60*60-min*1000*60)/1000^0 ;
var span = document.getElementById("my_timer") ;
var hours = (hour<10) ? "0"+hour : hour ;
var mins = (min<10) ? "0"+min : min ;
var secs = (sec<10) ? "0"+sec : sec ;
span.innerHTML = hours+":"+mins+":"+secs ;
function time() {
sec-- ;
if(sec<0) {
sec = 59 ;
min-- ;
} ;
if(min<0) {
min = 59 ;
hour-- ;
} ;
var hours = (hour<10) ? "0"+hour : hour ;
var mins = (min<10) ? "0"+min : min ;
var secs = (sec<10) ? "0"+sec : sec ;
span.innerHTML = hours+":"+mins+":"+secs ;
setTimeout(time, 1000) ;
} ;
setTimeout(time, 1000) ;
</script>
__________________
★ ²º¹³ ☆

Последний раз редактировалось Hekumok, 30.12.2012 в 22:19.
Ответить с цитированием
  #4 (permalink)  
Старый 30.12.2012, 23:41
Профессор
Отправить личное сообщение для hoax Посмотреть профиль Найти все сообщения от hoax
 
Регистрация: 20.09.2012
Сообщений: 151

Что мы делаем в данный строке объясните поподробнее плиз)

var hour = ms/1000/60/60^0 ;
var min = (ms-hour*1000*60*60)/1000/60^0 ;
var sec = (ms-hour*1000*60*60-min*1000*60)/1000^0 ;
Ответить с цитированием
  #5 (permalink)  
Старый 31.12.2012, 00:04
Аватар для Hekumok
Отправить личное сообщение для Hekumok Посмотреть профиль Найти все сообщения от Hekumok
 
Регистрация: 04.06.2012
Сообщений: 513

hoax, получаем часы, минуты и секунды если вас смущает ^0 - так это просто округление числа
__________________
★ ²º¹³ ☆
Ответить с цитированием
  #6 (permalink)  
Старый 31.12.2012, 00:41
Профессор
Отправить личное сообщение для hoax Посмотреть профиль Найти все сообщения от hoax
 
Регистрация: 20.09.2012
Сообщений: 151

Да мне интересно, почему идет умножение/деление именно на 1000, 60, 60?
Ответить с цитированием
  #7 (permalink)  
Старый 31.12.2012, 01:19
Профессор
Отправить личное сообщение для hoax Посмотреть профиль Найти все сообщения от hoax
 
Регистрация: 20.09.2012
Сообщений: 151

справедливо
Ответить с цитированием
  #8 (permalink)  
Старый 31.12.2012, 10:11
Кандидат Javascript-наук
Отправить личное сообщение для Your Посмотреть профиль Найти все сообщения от Your
 
Регистрация: 03.10.2012
Сообщений: 147

<?php
date_default_timezone_set('Europe/Moscow');
$date=date('M d,Y H:i:s');
$time=strtotime($date);
$new_date='Nov 27,2012 20:00:00';
$new_time=strtotime($new_date);
$loc='http://'.$_SERVER['SERVER_NAME'].'/';
if(isset($_COOKIE['lang'])) {
	$file=$_COOKIE['lang'];
} else {
	$file='ru';
}
$lang['ru']=array(
'open'=>'До открытия:',
'days'=>'Дней:',
'hours'=>'Часов:',
'minutes'=>'Минут:',
'seconds'=>'Секунд:'
);
$lang['en']=array(
'open'=>'Open after:',
'days'=>'Days:',
'hours'=>'Hours:',
'minutes'=>'Minutes:',
'seconds'=>'Seconds:'
);
function lang($key) {
	if($key) {
		global $file,$lang;
		return $lang[$file][$key];
	}
	return false;
}
?>
<script type="text/javascript">
function timer() {
	var self=this,
	date=new Date('<?=$date?>'),
	new_date=new Date('<?=$new_date?>'),
	time=(new_date.getTime()-date.getTime()),
	secounds,
	last_secounds,
	days,
	last_days,
	hours,
	last_hours,
	minutes;
	if(1<time) {
		secounds=parseInt(time/1000);
		days=parseInt(secounds/(24*60*60));
		last_days=secounds-days*24*3600;
		hours=parseInt(last_days/3600);
		if(10>hours) {
			hours='0'+hours;
		}
		last_hours=last_days-hours*3600;
		minutes=(parseInt(last_hours/60));
		if(10>minutes) {
			minutes='0'+minutes;
		}
		last_secounds=last_hours-minutes*60;
		if(10>last_secounds) {
			last_secounds='0'+last_secounds;
		}
		id('days',days);
		id('hours',hours);
		id('minutes',minutes);
		id('secounds',last_secounds);
	}
}
function id(id,value) {
	value=value || '';
	if(value) {
		return document.getElementById(id).innerHTML=value;
	} else {
		return document.getElementById(id);
	}
}
timer();
</script>
<style type="text/css">
	#timers td{color:#f9ff00;}
</style>
<table id="timers">
	<tr id="timers">
		<td colspan="4">
			<?=lang('open')?>
		</td>
	</tr>
	<tr id="timers">
		<td>
			<?=lang('days')?>
		</td>
		<td>
			<?=lang('hours')?>
		</td>
		<td>
			<?=lang('minutes')?>
		</td>
		<td>
			<?=lang('seconds')?>
		</td>
	</tr>
	<tr id="timers">
		<td id="days"></td>
		<td id="hours"></td>
		<td id="minutes"></td>
		<td id="secounds"></td>
	</tr>
</table>
</div>




=)))))))


давно еще писал, не стану замарачиваться))))
Он мне не нужен)))
уже по другому давно делаю=))
Тут бы переписать)) по компактнее))

Последний раз редактировалось Your, 31.12.2012 в 10:18.
Ответить с цитированием
  #9 (permalink)  
Старый 31.12.2012, 11:12
Профессор
Отправить личное сообщение для hoax Посмотреть профиль Найти все сообщения от hoax
 
Регистрация: 20.09.2012
Сообщений: 151

Правильно ли я понимаю?

// ms - это общая разница времени в милисекундах

// общее число мс делим на 1 сек,1 мин, 1 час = часы.

var hour = ms/1000/60/60^0 ; 

//мс-часы = получаем остаточное кол-во мс, доводим их до часа (неполного чтоли), а далее опять делим и получаем - ???

var min = (ms-hour*1000*60*60)/1000/60^0 ;

//аналогично

var sec = (ms-hour*1000*60*60-min*1000*60)/1000^0 ;
Ответить с цитированием
  #10 (permalink)  
Старый 31.12.2012, 16:33
Аватар для Hekumok
Отправить личное сообщение для Hekumok Посмотреть профиль Найти все сообщения от Hekumok
 
Регистрация: 04.06.2012
Сообщений: 513

hoax,
var hour = ms/1000/60/60^0 ; // получаем часы
var min = (ms-hour*1000*60*60)/1000/60^0 ;
/* в скобочках из всего количества мс
вычитаем количество мс, содержащихся
в часах (hour), и получаем затем минуты */
var sec = (ms-hour*1000*60*60-min*1000*60)/1000^0 ; 
/* в скобочках делаем тоже самое, но еще вычитаем
и количество мс, содержащихся в минутах (min),
затем получаем секунды */
__________________
★ ²º¹³ ☆
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как таймер заставить работать поочерёдно вызываю одну и ту же функцию два раза? JavaScriptProgrammer Events/DOM/Window 12 08.11.2012 23:41
Зацикленный таймер jacko Общие вопросы Javascript 2 01.07.2012 14:32
Как сделать таймер как в САР? jelome Элементы интерфейса 0 27.06.2011 12:40
Таймер для слайдера (jQuery) RamPi Events/DOM/Window 0 23.05.2011 14:52
Как два раза вставить таймер alexvost Общие вопросы Javascript 2 08.02.2011 02:28