Javascript.RU

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

Разница между датами
Помогите со скриптом

нужно найти разницу между двумя датами
одна дата вводится с клавиатуры (<input type = "date") а вторая - текущая дата..

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

var d = new Date();
d.setTime(Date.parse("21 May 1958 10:12"));

alert ( +new Date - d );


лучше прочитать это
Ответить с цитированием
  #3 (permalink)  
Старый 29.03.2011, 16:52
Новичок на форуме
Отправить личное сообщение для Amour Посмотреть профиль Найти все сообщения от Amour
 
Регистрация: 29.03.2011
Сообщений: 3

как сделать вместо ("21 May 1958 10:12") чтобы была дата с клавиатуры

Последний раз редактировалось Amour, 29.03.2011 в 17:17. Причина: вопрос
Ответить с цитированием
  #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.
Ответить с цитированием
  #5 (permalink)  
Старый 29.03.2011, 21:01
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,109

melky,
На всякий случай .... Date.parse
Цитата:
Для краткого формата даты допускается использование разделителей "/" или "-", но порядок элементов должен быть строго "месяц/день/год", например "7/20/96".
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Различия между append и appendTo voooodoo jQuery 2 04.03.2011 22:45
Разница между frameset & iframes morg4n Events/DOM/Window 2 14.08.2010 23:37
Разница между датами в днях autosoft Общие вопросы Javascript 2 01.06.2010 19:23
C и С++ В чём разница? JSprog Оффтопик 27 18.08.2009 07:20
Разница между датами в минутах Nikitos* Общие вопросы Javascript 4 22.01.2009 12:37