Перейти к контенту

До [событие] осталось [время]


Рекомендуемые сообщения

Как на PHP или HTML сделать что то подобное, как было на сайте Rammstein.ee ?

Что до какого то события осталось столько то дней ?

Заранее спасибо !

Ссылка на комментарий
Поделиться на других сайтах

я так понял скриптик нужне для нового года? :D

 

то что ниже сохраняем как time.js

затем в хедере html-файла между <head> и </head> пишем:

<script language="javascript" src="time.js"></script>

 

<!-- 
function myFunction1(){ 
if (date<=myDate) month1=12-(month-myMonth); 
else month1=11-(month-myMonth); 
} 
function myFunction2(){ 
if (date>myDate) month1=(myMonth-month-1); 
else month1=(myMonth-month); 
} 
function myFunction3(){ 
if (date<=myDate) month1=0; 
else month1=11; 
} 

function myFunction4(){ 
if (month==2) date1=(28-date+myDate); 
if (month==4) date1=(30-date+myDate); 
if (month==6) date1=(30-date+myDate); 
if (month==9) date1=(30-date+myDate); 
if (month==11) date1=(30-date+myDate); 
if (month==1) date1=(31-date+myDate); 
if (month==3) date1=(31-date+myDate); 
if (month==5) date1=(31-date+myDate); 
if (month==7) date1=(31-date+myDate); 
if (month==8) date1=(31-date+myDate); 
if (month==10) date1=(31-date+myDate); 
if (month==12) date1=(31-date+myDate); 
} 

var date=(new Date()).getDate(); 
var month=(new Date()).getMonth()+1; 

//Set Yuor Date. 
var myDate=31 
var myMonth=12 
if (month>myMonth) myFunction1(); 
if (month<myMonth) myFunction2(); 
if (month==myMonth) myFunction3(); 

if (date<=myDate) date1=(myDate-date); 
if (date>myDate) myFunction4(); 

if (month1==1) monthtxt=("месяц"); 
if (month1>1 && month1<5) monthtxt=("месяца"); 
if (month1>4) monthtxt=("месяцев"); 

if (date1==1, 21) datetxt=("день"); 
if (date1>1 && date1<5) datetxt=("дня"); 
if (date1>21 && date1<25) datetxt=("дня"); 
if (date1>4 && date1<21) datetxt=("дней"); 
if (date1>24 && date1<31) datetxt=("дней"); 

var txt=("До Нового года осталось"); 
document.write('<span class=ny>'+'</span><br>'); 

if (month1==0 && date1==0) document.write('<font style="color: #ffffff; font-family: verdana, arial; font-size: 9px;">'+"0 дней"+'</font>');; 

if (month1>0) document.write('<font style="color: #ffffff; font-family: verdana, arial; font-size: 9px;">'+month1+" "+monthtxt+'</font>'); 

if (date1>0) document.write('<font style="color: #ffffff; font-family: verdana, arial; font-size: 9px;"> '+""+date1+" "+datetxt+'</font>'); 
else document.write(""); 

// -->

Ссылка на комментарий
Поделиться на других сайтах

Что то глючит

Руки вроде растут из плеч :D

Но показывается только "16 дней"

И все, вот тут можно это увидеть

http://g-dza.digitage.ru

 

(Не сочтите за рекламу)

Добавлено в [mergetime]1103105830[/mergetime]

Все, теперь все круто !

Спасибо

Ссылка на комментарий
Поделиться на других сайтах

Christoph Schneider

тогда попробуй это дело (весь код, без сохранения во вн. файле) в <body>, в то самое место, где бы ты хотел чтоб оно появилось, вроде тогда будет нормально работать...

Ссылка на комментарий
Поделиться на других сайтах

Нашел что т покруче :D

Пример на http://g-dza.digitage.ru (Не сочтите за рекламу)

today = new Date();
BigDay = new Date("December 31, 2004")
msPerDay = 24 * 60 * 60 * 1000;
timeLeft = (BigDay.getTime() - today.getTime());
e_daysLeft = timeLeft / msPerDay;
daysLeft = Math.floor(e_daysLeft);
e_hrsLeft = (e_daysLeft - daysLeft)*24;
hrsLeft = Math.floor(e_hrsLeft);
minsLeft = Math.floor((e_hrsLeft - hrsLeft)*60);
document.write( "До Нового Года осталось <b>"+daysLeft+"</b> дней(дня), <b>"+hrsLeft+"</b> часов и <b>"+minsLeft+"</b> минут !!!");

А как и куда, описано выше

Ссылка на комментарий
Поделиться на других сайтах

1. Открываем блокнот

2. Вставляем туда это:

today = new Date();
BigDay = new Date("December 31, 2004")
msPerDay = 24 * 60 * 60 * 1000;
timeLeft = (BigDay.getTime() - today.getTime());
e_daysLeft = timeLeft / msPerDay;
daysLeft = Math.floor(e_daysLeft);
e_hrsLeft = (e_daysLeft - daysLeft)*24;
hrsLeft = Math.floor(e_hrsLeft);
minsLeft = Math.floor((e_hrsLeft - hrsLeft)*60);
document.write( "<img src=http://g-dza.digitage.ru/2.gif>До Нового Года осталось <b>"+daysLeft+"</b> дней(дня), <b>"+hrsLeft+"</b> часов и <b>"+minsLeft+"</b> минут !!!<img src=http://g-dza.digitage.ru/33.gif> ");

3. Сохраняем как time.js, заливаем на сервак в главную директорию форума (где index.php и conf_global.php)

4. Идем в админку - Скины и шаблоны (Skins & Templates) - Шаблоны (Board Wrappers)

5. Тама выбираем шаблон для редактирования, находим там <% NAVIGATION %>

6. Ниже встявляем

<center><script language="javascript" src="time.js"></script></center><br><br>

 

Радуемся

 

P.S - 4, 5 и 6 пункты проделываем со всеми скинами

Ссылка на комментарий
Поделиться на других сайтах

Christoph Schneider

У тебя ошибки в скрипте.

1. После строчки BigDay = new Date("December 31, 2004") должна быть точка с запятой.

2. Отсчет ведем до 31 декабря или все же до 1 января? :D

 

Должно быть вот так:

BigDay = new Date("January 01, 2005");

Ссылка на комментарий
Поделиться на других сайтах

Вот мой немного модифицированный вариант с правильным отображением текста, идущего после дней, часов и минут и с учетом того, что Новый Год уже наступил :D

today = new Date();
BigDay = new Date("January 01, 2005");
msPerDay = 24 * 60 * 60 * 1000;
timeLeft = (BigDay.getTime() - today.getTime());
e_daysLeft = timeLeft / msPerDay;
daysLeft = Math.floor(e_daysLeft);
e_hrsLeft = (e_daysLeft - daysLeft)*24;
hrsLeft = Math.floor(e_hrsLeft);
minsLeft = Math.floor((e_hrsLeft - hrsLeft)*60);

if (daysLeft == 1, 21, 31) daytxt = ("день"), istxtd = ("остался");
if (daysLeft>1 && daysLeft<5) daytxt = ("дня"), istxtd = ("осталось");
if (daysLeft>=5 && daysLeft<21) daytxt = ("дней"), istxtd = ("осталось");
if (daysLeft>21 && daysLeft<25) daytxt = ("дня"), istxtd = ("осталось");
if (daysLeft>=25 && daysLeft<31) daytxt = ("дней"), istxtd = ("осталось");

if (hrsLeft == 1, 21) hrstxt = ("час"), istxth = ("остался");
if (hrsLeft>1 && hrsLeft<5) hrstxt = ("часа"), istxth = ("осталось");
if (hrsLeft>=5 && hrsLeft<21) hrstxt = ("часов"), istxth = ("осталось");
if (hrsLeft>21 && hrsLeft<25) hrstxt = ("часа"), istxth = ("осталось");
if (hrsLeft == 0) hrstxt = ("часов"), istxth = ("осталось");

if (minsLeft == 1, 21, 31, 41, 51) mintxt = ("минута"), istxtm = ("осталась");
if (minsLeft>1 && minsLeft<5) mintxt = ("минуты"), istxtm = ("осталось");
if (minsLeft>=5 && minsLeft<21) mintxt = ("минут"), istxtm = ("осталось");
if (minsLeft>21 && minsLeft<25) mintxt = ("минуты"), istxtm = ("осталось");
if (minsLeft>=25 && minsLeft<31) mintxt = ("минут"), istxtm = ("осталось");
if (minsLeft>31 && minsLeft<35) mintxt = ("минуты"), istxtm = ("осталось");
if (minsLeft>=35 && minsLeft<41) mintxt = ("минут"), istxtm = ("осталось");
if (minsLeft>41 && minsLeft<45) mintxt = ("минуты"), istxtm = ("осталось");
if (minsLeft>=45 && minsLeft<51) mintxt = ("минут"), istxtm = ("осталось");
if (minsLeft>51 && minsLeft<55) mintxt = ("минуты"), istxtm = ("осталось");
if (minsLeft>=55 && minsLeft<60) mintxt = ("минут"), istxtm = ("осталось");
if (minsLeft == 0) mintxt = ("минут"), istxtm = ("осталось");

if (daysLeft>0) document.write("До Нового Года "+istxtd+" <b>"+daysLeft+"</b> "+daytxt+", <b>"+hrsLeft+"</b> "+hrstxt+" и <b>"+minsLeft+"</b> "+mintxt+"");
if (daysLeft==0)
{ 
if (hrsLeft!=0) document.write("До Нового Года "+istxth+" <b>"+hrsLeft+"</b> "+hrstxt+" и <b>"+minsLeft+"</b> "+mintxt+"");
else
{	
  if (minsLeft==0) document.write( "До Нового Года остались считанные секунды!");
  if (minsLeft==1) document.write( "До Нового Года осталась всего лишь минута!");
  if (minsLeft!=0 && minsLeft!=1) document.write( "До Нового Года "+istxtm+" всего <b>"+minsLeft+"</b> "+mintxt+"");
}	
}
if (daysLeft<0) document.write("Сейчас уже 2005 год."<br>"Поздравляем!");

Да, столко if только подтверждает "великость и могучесть" русского языка ;)

 

Немного исправил скрипт...

Изменено пользователем DINI
Ссылка на комментарий
Поделиться на других сайтах

Lord_of_Rings

Тоже через блокнот. А вставляешь куда тебе удобнее, используя <script language="javascript" src="time.js"></script>

 

Вопрос ко всем: как это все сделать в реальном времени, т.е. чтобы дата обновлялась автоматически, а не после нажатия Refresh?

Ссылка на комментарий
Поделиться на других сайтах

Все! Я придумал! Короче, ниже вы видите готовый скрипт с отсчетом до указанной даты в днях, часах, минутах и секундах, правильным отображением текста после этих самых дней, часов и т.д. и в реальном времени :D

 

Итак. Инструкция по установке.

1. Открыть блокнот и вставить туда следующий код:

function nydate()
{
today = new Date();
BigDay = new Date("January 01, 2005");
msPerDay = 24 * 60 * 60 * 1000;
timeLeft = (BigDay.getTime() - today.getTime());
e_daysLeft = timeLeft / msPerDay;
daysLeft = Math.floor(e_daysLeft);
e_hrsLeft = (e_daysLeft - daysLeft)*24;
hrsLeft = Math.floor(e_hrsLeft);
e_minsLeft = (e_hrsLeft - hrsLeft)*60;
minsLeft = Math.floor(e_minsLeft);
secLeft = Math.floor((e_minsLeft - minsLeft)*60);

if (daysLeft == 1, 21, 31) daytxt = ("день"), istxtd = ("остался");
if ((daysLeft>1 && daysLeft<5) || (daysLeft>21 && daysLeft<25)) daytxt = ("дня"), istxtd = ("осталось");
if ((daysLeft>=5 && daysLeft<21) || (daysLeft>=25 && daysLeft<31)) daytxt = ("дней"), istxtd = ("осталось");

if (hrsLeft == 1, 21) hrstxt = ("час"), istxth = ("остался");
if ((hrsLeft>1 && hrsLeft<5) || (hrsLeft>21 && hrsLeft<25)) hrstxt = ("часа"), istxth = ("осталось");
if ((hrsLeft == 0) || (hrsLeft>=5 && hrsLeft<21)) hrstxt = ("часов"), istxth = ("осталось");

if (minsLeft == 1, 21, 31, 41, 51) mintxt = ("минута"), istxtm = ("осталась");
if ((minsLeft>1 && minsLeft<5) || (minsLeft>21 && minsLeft<25) || (minsLeft>31 && minsLeft<35) || (minsLeft>41 && minsLeft<45) || (minsLeft>51 && minsLeft<55)) mintxt = ("минуты"), istxtm = ("осталось");
if ((minsLeft == 0) || (minsLeft>=5 && minsLeft<21) || (minsLeft>=25 && minsLeft<31) || (minsLeft>=35 && minsLeft<41) || (minsLeft>=45 && minsLeft<51) || (minsLeft>=55 && minsLeft<60)) mintxt = ("минут"), istxtm = ("осталось");

if (secLeft == 1, 21, 31, 41, 51) sectxt = ("секунда");
if ((secLeft>1 && secLeft<5) || (secLeft>21 && secLeft<25) || (secLeft>31 && secLeft<35) || (secLeft>41 && secLeft<45) || (secLeft>51 && secLeft<55)) sectxt = ("секунды");
if ((secLeft == 0) || (secLeft>=5 && secLeft<21) || (secLeft>=25 && secLeft<31) || (secLeft>=35 && secLeft<41) || (secLeft>=45 && secLeft<51) || (secLeft>=55 && secLeft<60)) sectxt = ("секунд");

if (daysLeft>0) 
{
time=("До Нового Года "+istxtd+" <b>"+daysLeft+"</b> "+daytxt+", <b>"+hrsLeft+"</b> "+hrstxt+", <b>"+minsLeft+"</b> "+mintxt+" и <b>"+secLeft+"</b> "+sectxt+"");
if(document.all)
{
nyspan.innerHTML=time;
}
if(document.layers)
{
document.layers.nyclock.document.open();
document.layers.nyclock.document.write("До Нового Года "+istxtd+" <b>"+daysLeft+"</b> "+daytxt+", <b>"+hrsLeft+"</b> "+hrstxt+", <b>"+minsLeft+"</b> "+mintxt+" и <b>"+secLeft+"</b> "+sectxt+"");
document.layers.nyclock.document.close();
}
setTimeout("nydate()",1000);
}
if (daysLeft==0)
{ 
if (hrsLeft!=0)
{
  time=("До Нового Года "+istxth+" <b>"+hrsLeft+"</b> "+hrstxt+" и <b>"+minsLeft+"</b> "+mintxt+" и <b>"+secLeft+"</b> "+sectxt+"");
  if(document.all)
  {
  	nyspan.innerHTML=time;
  }
  if(document.layers)
  {
  	document.layers.nyclock.document.open();
  	document.layers.nyclock.document.write("До Нового Года "+istxth+" <b>"+hrsLeft+"</b> "+hrstxt+" и <b>"+minsLeft+"</b> "+mintxt+" и <b>"+secLeft+"</b> "+sectxt+"");
  	document.layers.nyclock.document.close();
  }
  setTimeout("nydate()",1000);
}
else
{	
  if (minsLeft==0) document.write( "До Нового Года остались считанные секунды!");
  if (minsLeft==1) document.write( "До Нового Года осталась всего лишь минута!");
  if (minsLeft!=0 && minsLeft!=1) 
  {
  	time=("До Нового Года "+istxtm+" всего <b>"+minsLeft+"</b> "+mintxt+" и <b>"+secLeft+"</b> "+sectxt+"");
  	if(document.all)
  	{
    nyspan.innerHTML=time;
  	}
  	if(document.layers)
  	{
    document.layers.nyclock.document.open();
    document.layers.nyclock.document.write("До Нового Года "+istxtm+" всего <b>"+minsLeft+"</b> "+mintxt+" и <b>"+secLeft+"</b> "+sectxt+"");
    document.layers.nyclock.document.close();
  	}
  	setTimeout("nydate()",1000);
  }
}  
}
if (daysLeft<0) document.write("Сейчас уже 2005 год."<br>"Поздравляем!");
}
window.onload = nydate;

2. Сохранить это все как nytime.js и залить на фтп, где находится файл index.php.

3. В админке зайти в меню Скины и шаблоны -> Шаблоны форума -> Редактировать

4. После тэга <% NAVIGATION %> вставить

<center><script src="nytime.js" type="text/javascript"></script>

<span id="nyspan"></span>

<layer id="nyclock"></layer></center>

5. Сохранить изменения в шаблоне.

 

Примечание: За отображение даты отвечают тэги <span id...> и <layer id...>, и на странице дата появится именно в том месте, где стоят эти тэги.

Ссылка на комментарий
Поделиться на других сайтах

Исправил скрипт. Теперь все должно работать и в Опере :D

 

P.S. В предыдущем сообщении находится уже исправленный вариант скрипта.

Ссылка на комментарий
Поделиться на других сайтах

А как передать этому скрипту переменую [события] из РНР в формате time() ? :D
Ссылка на комментарий
Поделиться на других сайтах

termic

Спасибо за замечание, я когда пост писал, пропустил это... В своем посте я тэг исправил, а то начнут делать как написано, а потом вопрсы пойдут "почему не работает..." :D

 

Еve

Че-то я не совсем понял, что ты имеешь в виду...

Кстати, у тебя на форуме тэг <% COPYRIGHT %> через Оперу виден.

В Mozilla Вылезает тэг <% COPYRIGHT %>

Ссылка на комментарий
Поделиться на других сайтах

DINI

я имею ввиду, то, что в твоём скрипте, дата события задаётся непосредственно в скрипте

BigDay = new Date("January 01, 2005");

а потом, на сколько я понял, мы её конвертируем в Time() формат. (т.е. 197391104)

timeLeft = (BigDay.getTime() - today.getTime());

 

так вот... задача в том, что:

событие будет лежать в БД форума уже в формате Time() (т.е. 197391104),

и его надо будет из переменной в РНР скрипте передать этому скрипту. Воть. :D

Ссылка на комментарий
Поделиться на других сайтах

Еve

Если честно, я еще не на столько хорошо знаю пхп и яву, чтобы такое сделать. Но я подумаю, может, и придумаю чего-нибудь... :D

Ссылка на комментарий
Поделиться на других сайтах

DINI

Почему-то при установке получилось следующее: кодировка не win-1251, в мозилле не отображается :D Не знаешь отчего так?

Ссылка на комментарий
Поделиться на других сайтах

DINI, вот ссылка на скрипт отсчёта, но он немного глючный (глотает секунды).

Счетчик оставшегося времени

Однако, там принцип в том, что дата задаётся как бы отдельно...

 

Сможешь на основе этих двух создать отсчёт?

Структуру от этого, а принцип указания даты от того?

Только её там в формате Time() вводить чтобы.

Ссылка на комментарий
Поделиться на других сайтах

  • 2 недели спустя...

zero_vlz

В Опере и Мозилле почему-то кодировка глючит при автовыборе. Ее надо проставлять вручную...

 

Еve

И все-таки я не понимаю, чего ты хочешь сделать...

Зачем тебе прописывать дату в БД, а потом брать ее через скрипт? Не легче ли открыть сам скрипт и ручками проставить нужную дату?

Тем более, в том скрипте, на который ты мне указал, дата хоть и задается отдельно, но также вручную, без использования time()

Ссылка на комментарий
Поделиться на других сайтах

Присоединиться к обсуждению

Вы можете ответить сейчас, а зарегистрироваться позже. Если у вас уже есть аккаунт, войдите, чтобы ответить от своего имени.

Гость
Ответить в этой теме...

×   Вы вставили отформатированный текст.   Удалить форматирование

  Допустимо не более 75 смайлов.

×   Ваша ссылка была автоматически заменена на медиа-контент.   Отображать как ссылку

×   Ваши публикации восстановлены.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.

Зарузка...
×
×
  • Создать...

Важная информация

Находясь на нашем сайте, вы соглашаетесь на использование файлов cookie, а также с нашим положением о конфиденциальности Политика конфиденциальности и пользовательским соглашением Условия использования.