Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 25.04.2012, 11:26
Интересующийся
Отправить личное сообщение для Mrjoey Посмотреть профиль Найти все сообщения от Mrjoey
 
Регистрация: 12.09.2010
Сообщений: 26

доработка скрипта обратного отсчета
День добрый!

такая ситуация, есть скрипт который считает оставшееся время до назначенного дня, подскажите, что нужно сделать чтобы он считал не до 04.05.2012, 00:00 (фактическое начало дня), а например до 04.05.2012, 15:15?

//Скрипт обратного отсчета времени 

var eventstr = "Чемпионат мира по хоккею 2012: расписание матчей"; //Эта строка выводиться по окончанию отсчета
var countdownid = document.getElementById("countdown"); //ID элемента в который выводится время

var montharray=new Array("Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec");

function CountDowndmn(yr,m,d){
	cdyear=yr;
	cdmonth=m;
	cdday=d;
	var today=new Date();
	var todayy=today.getYear();
	if (todayy < 1000)
	todayy+=1900;
	var todaym=today.getMonth();
	var todayd=today.getDate();
	var todayh=today.getHours();
	var todaymin=today.getMinutes();
	var todaysec=today.getSeconds();
	var todaystring=montharray[todaym]+" "+todayd+", "+todayy+" "+todayh+":"+todaymin+":"+todaysec;
	futurestring=montharray[m-1]+" "+d+", "+yr
	dd=Date.parse(futurestring)-Date.parse(todaystring);
	dday=Math.floor(dd/(60*60*1000*24)*1);
	dhour=Math.floor((dd%(60*60*1000*24))/(60*60*1000)*1);
	dmin=Math.floor(((dd%(60*60*1000*24))%(60*60*1000))/(60*1000)*1);
	dsec=Math.floor((((dd%(60*60*1000*24))%(60*60*1000))%(60*1000))/1000*1);
	if(dday<=0&&dhour<=0&&dmin<=0&&dsec<=1){
	countdownid.innerHTML=eventstr;
return
}
else {
	var lastchar = ""+dsec;	lastchar = lastchar.substring(lastchar.length-1,lastchar.length);
	var dsecstr = "секунд";
	if (lastchar=="1") { dsecstr = "секунда"; }
	if ((lastchar=="2")||(lastchar=="3")||(lastchar=="4")) { dsecstr = "секунды"; }
	
	lastchar = ""+dmin;	lastchar = lastchar.substring(lastchar.length-1,lastchar.length);
	var dminstr    = "минут";
	if (lastchar=="1") { dminstr = "минута"; }
	if ((lastchar=="2")||(lastchar=="3")||(lastchar=="4")) { dminstr = "минуты"; }

	lastchar = ""+dhour;	lastchar = lastchar.substring(lastchar.length-1,lastchar.length);
	var dhourstr   = "часов";
	if (lastchar=="1") { dhourstr = "час"; }
	if ((lastchar=="2")||(lastchar=="3")||(lastchar=="4")) { dhourstr = "часа"; }

	lastchar = ""+dday;	lastchar = lastchar.substring(lastchar.length-1,lastchar.length);
	var ddaystr = "дней";
	if (lastchar=="1") { ddaystr = "день"; }
	if ((lastchar=="2")||(lastchar=="3")||(lastchar=="4")) { ddaystr = "дня"; }

	countdownid.innerHTML="До Чемпионата мира по хоккею 2012: <br> "+dday+ " " +ddaystr+",  "+dhour+" "+dhourstr+", "+dmin+" "+dminstr+" и "+dsec+" "+dsecstr;

	
}
setTimeout("CountDowndmn(cdyear,cdmonth,cdday)",1000);
}

CountDowndmn(2012,05,04); //Дата отсчета: год, месяц, число


т.е. там:
отсчёт: год, месяц, число
А необходим: год, месяц, число, час, минута.

Спасибо.


Mrjoey

Последний раз редактировалось Mrjoey, 25.04.2012 в 11:54.
Ответить с цитированием
  #2 (permalink)  
Старый 25.04.2012, 17:44
Интересующийся
Отправить личное сообщение для Mrjoey Посмотреть профиль Найти все сообщения от Mrjoey
 
Регистрация: 12.09.2010
Сообщений: 26

мог бы кто нибудь подсказать?
__________________
Расписание матчей [URL="http://sportlands.ru/hockey/world-championship/"]Чемпионата мира по хоккею 2012[/URL]!
Ответить с цитированием
  #3 (permalink)  
Старый 25.04.2012, 23:27
Аватар для bes
bes bes вне форума
Профессор
Отправить личное сообщение для bes Посмотреть профиль Найти все сообщения от bes
 
Регистрация: 22.03.2012
Сообщений: 3,744

Что мешает добавить в расчёт необходимое вам время, переводите текущее и нужное время в секунды, находите разницу по времени и вычленяете из этой разницы годы, месяцы, дни, часы, минуты и секунды.
Ответить с цитированием
  #4 (permalink)  
Старый 26.04.2012, 09:13
Интересующийся
Отправить личное сообщение для Mrjoey Посмотреть профиль Найти все сообщения от Mrjoey
 
Регистрация: 12.09.2010
Сообщений: 26

bes, мог бы подсказать код? понимаю общие принципы, но все же чайник в javascript.
__________________
Расписание матчей [URL="http://sportlands.ru/hockey/world-championship/"]Чемпионата мира по хоккею 2012[/URL]!
Ответить с цитированием
  #5 (permalink)  
Старый 26.04.2012, 13:20
Аватар для bes
bes bes вне форума
Профессор
Отправить личное сообщение для bes Посмотреть профиль Найти все сообщения от bes
 
Регистрация: 22.03.2012
Сообщений: 3,744

Насколько я понял, ваш пример рабочий, не хватает только обратного отсчёта от необходимого времени в момент наступления нужного дня (проверите это при помощи if).

Код:
 
  allSecondsNow = todayh*3600 + todaymin*60 + todaysec; 
  //x и y - нужные вам часы и минуты, с которых будет происходить обратный отсчёт
  allSecondsFrom = x*3600 + y*60;
  dif = allSecondsFrom - allSecondsNow; 
  //нужные вам оставшиеся часы, минуты и секунды
  h = parseInt(dif/3600);  
  m =parseInt((dif - h*3600)/60); 
  s = dif - h*3600 - m*60;
Для вывода можете использовать условия вида (h < 10 ? "0" : "").
Ответить с цитированием
  #6 (permalink)  
Старый 26.04.2012, 14:36
Интересующийся
Отправить личное сообщение для Denizz Посмотреть профиль Найти все сообщения от Denizz
 
Регистрация: 03.02.2012
Сообщений: 25

Или можно задать дату конкретным числом с минутами-секундами :
var d=new Date(2012,04,04,15,15,0);
var today=new Date();
var dRest=Math.floor((d.getTime()-today.getTime())/(1000*60*60*24))

где dRest - количество оставшихся дней. Если надо уберете из знаменателя лишнее (1000*60*60*24) получите оставшиеся минуты, часы и т.п. А дальше функцию обратного счета нужно сделать...
Ответить с цитированием
  #7 (permalink)  
Старый 27.04.2012, 11:56
Интересующийся
Отправить личное сообщение для Mrjoey Посмотреть профиль Найти все сообщения от Mrjoey
 
Регистрация: 12.09.2010
Сообщений: 26

Сообщение от Denizz Посмотреть сообщение
Или можно задать дату конкретным числом с минутами-секундами :
var d=new Date(2012,04,04,15,15,0);
var today=new Date();
var dRest=Math.floor((d.getTime()-today.getTime())/(1000*60*60*24))

где dRest - количество оставшихся дней. Если надо уберете из знаменателя лишнее (1000*60*60*24) получите оставшиеся минуты, часы и т.п. А дальше функцию обратного счета нужно сделать...
Спасибо!
__________________
Расписание матчей [URL="http://sportlands.ru/hockey/world-championship/"]Чемпионата мира по хоккею 2012[/URL]!
Ответить с цитированием
  #8 (permalink)  
Старый 27.04.2012, 22:56
Интересующийся
Отправить личное сообщение для Denizz Посмотреть профиль Найти все сообщения от Denizz
 
Регистрация: 03.02.2012
Сообщений: 25

Вот мой вариант функции :
function myTimer() {
var d=new Date(2012,04,04,15,15,0);
var today=new Date();
var dRest = Math.floor((d.getTime()-today.getTime())/(1000*60*60*24))
var sec = 60 - today.getSeconds(); 
var min = 15 - today.getMinutes();
var hour = 15 - today.getHours();
var body = document.getElementsByTagName("body")[0];
var cont = document.createElement('div');
var elem = document.createElement('div');

cont.appendChild(elem);
body.appendChild(cont);

	var a = setInterval ( function() {
		sec--;
			
		if ( sec==0 ) {
		sec = 59;
		min--;
				
		} else if (min < 0) {
		min = 60 + min;
		hour--;
		}
		
		if ( sec < 10 )  {
		brS = ":0"; //добавить перед секундами 0, если число не двузначное
		} else { brS = ":"} ;
		
		if ( min < 10 )  {
		brM = ":0"; //добавить перед минутами 0, если число не двузначное
		} else { brM = ":"} ;
		
		if ( hour < 0 ) {
		hour = 24 + hour;
		}	
			
		
		elem.innerHTML = hour + brM + min + brS + sec; 
		},1000 );

}
myTimer();

Надеюсь у вас получилось лучше ))
Ответить с цитированием
  #9 (permalink)  
Старый 05.08.2013, 11:59
Новичок на форуме
Отправить личное сообщение для vadimon Посмотреть профиль Найти все сообщения от vadimon
 
Регистрация: 07.09.2012
Сообщений: 6

И как в итоге должен выглядеть код?
Ответить с цитированием
  #10 (permalink)  
Старый 30.12.2013, 00:02
Новичок на форуме
Отправить личное сообщение для ivalerav Посмотреть профиль Найти все сообщения от ivalerav
 
Регистрация: 29.12.2013
Сообщений: 1

Изменить вот здесь:
function CountDowndmn(yr,m,d,hh,mm,ss){
	cdyear=yr;
	cdmonth=m;
	cdday=d;
	cdhour=hh;
	cdmin=mm;
	cdsec=ss;

Здесь:
futurestring=montharray[m-1]+" "+d+", "+yr+" "+hh+":"+mm+":"+ss;

И здесь:
setTimeout("CountDowndmn(cdyear,cdmonth,cdday,cdhour,cdmin,cdsec)",1000);}
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Доработка скрипта 1000вмр Ashas_grey Работа 1 26.03.2012 14:34
Доработка скрипта formus Работа 2 06.07.2011 10:08
Графический таймер обратного отсчета bobri4 Элементы интерфейса 4 24.08.2009 22:50
Таймер обратного отсчета Mihael-Vlz Общие вопросы Javascript 1 14.06.2009 19:21
таймер обратного отсчета Mignon Общие вопросы Javascript 1 07.06.2008 17:16