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

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


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

Как на 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()

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

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

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

Гость
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Ответить в этой теме...

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

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

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

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

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

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

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

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