Показать сообщение отдельно
  #4 (permalink)  
Старый 29.03.2011, 20:38
sinistral
Посмотреть профиль Найти все сообщения от melky
 
Регистрация: 28.03.2011
Сообщений: 5,418

попробую заодно функции html run ( теги форума)


вот

вводите сюда дату . Формат - <b>Y-m-d</b> <br>
<input type = "date" value="2011-03-30" onclick="do_it(this)">
<br>
событие <b>пока ничего.</b>

<script>
// кэш
reg = /\d{4}-\d{2}-\d{2}/;
k = 1/(1000*60*60) ;

function do_it(el){

/*проверка на соответствие шаблону*/
if ( !reg.test(el.value) ) {alert('err');return}

var now = new Date(); // текущее время
var fut = Date.parse( el.value ); // введенное время

var delta = fut - now; // разница во времени ( в миллисекундах)

var back = delta < 0; // TRUE, если время уже прошло. FALSE, если оно еще не  наступило

// т.к. в delta может быть и отрицательное число, то берем модуль, делим на 1000 и на 3600 ( после 1000 получаются секунды,после 3600 - часы) и потом округляем до двух знаков после запятой

var d = (Math.abs(delta)*k).toFixed(2);

// тут формирование строки.  в d у нас количество часов
var str  = '';

if( back) str = " было " + d + " часов назад";
else str = " будет через " + d + " часов.";

// это я щак нашел элемент,куда записывать строку (увы,лучше придумать не мог :D )
 el.parentNode.children[4].innerHTML = str;

}
</script>


код хорошо комментирован. думаю, проблем возникнуть не должно

часы даются не в привычном представлении ( 20:30 ), а в десятичном ( вместо 20:30 будет 20.5 )

и еще, во времени,которое выбирается, часы,минуты,секунды установлены на 00:00:00

Последний раз редактировалось melky, 29.03.2011 в 20:41.
Ответить с цитированием