Показать сообщение отдельно
  #3 (permalink)  
Старый 22.12.2014, 10:35
Профессор
Отправить личное сообщение для Rise Посмотреть профиль Найти все сообщения от Rise
 
Регистрация: 07.11.2013
Сообщений: 458

gevtiman, без даты никак, например, если зашел сегодня в 13:25, а вышел завтра в 13:25, то если не учитывать дату получается, что он вам ничего не должен
<form name="c">
	<input type="text" name="d"> ДД-ММ-ГГГГ<br>
	<input type="text" name="t"> ЧЧ-ММ<br>
	<input type="submit" value="Кнопка">
	<input type="text" name="p" readonly> руб.
</form>
<script>
document.c.onsubmit = function() {
	var p = (this.d.value + '-' + this.t.value).match(/^(\d{2})-(\d{2})-(\d{4})-(\d{2})-(\d{2})$/);
	if (!p) {
		this.p.value = 'Invalid format';
		return false;
	}
	var f = new Date(+p[3], p[2]-1, +p[1], +p[4], +p[5]);
	var d = new Date() - f;
	if (d < 6e4) {
		this.p.value = 'Date >= Date now';
		return false;
	}
	var x = {
		18: { m: 0, t: 10}, // 2-18
		2: { m: 0, t: 17} // 18-2
	};
	var y = 0;
	var h = f.getHours();
	while (1) {
		if (h > 17) {
			y = +f - f.setHours(26,0,0,0);
		} else if (h > 1) {
			y = +f - f.setHours(18,0,0,0);
		} else {
			y = +f - f.setHours(2,0,0,0);
		}
		h = f.getHours();
		if (y > 0) {
			x[h].m += y;
			d -= y;
		} else {
			if ((d + y) > 0) {
				x[h].m -= y;
				d += y;
			} else {
				x[h].m += d;
				break;
			}
		}
	}
	var s = 0;
	for (var k in x) {
		if (x[k].m) {
			s += parseInt(x[k].m / 6e4) * x[k].t;
		}
	}
	this.p.value = s;
	return false;
};
</script>
Ответить с цитированием