У кого есть простенький временной калькулятор следующего вида:
1:00
+2:10
=190 (результат в минутах).
Действия- сложение и вычитание.
Пожалуйста, вышлите на адресс artless@list.ru
очень нужно для работы
Нужна помощь!
Модераторы: Naeel Maqsudov, C_O_D_E
- Oscar
- Сообщения: 963
- Зарегистрирован: 29 май 2004, 13:44
- Откуда: Мюнхен (рожден в Киеве)
- Контактная информация:
calc.html
Код: Выделить всё
<script>
String.prototype.trim = function() { return this.replace(/^\s+|\s+$/, ''); };
function calculate() {
var input = document.getElementById("input").value;
var operation_plus;
if (input.match("\\+") != null) {
operation_plus = true;
} else if (input.match("-") != null) {
operation_plus = false;
} else {
alert("Input contains no \"+\" or \"-\" symbol");
return;
}
if (operation_plus) {
input = input.split("+");
} else {
input = input.split("-");
}
if (input.length < 1 || input.length > 2) {
alert("Wrong number of parameters");
return;
}
var first = input[0].trim();
var second = input[1].trim();
first = first.split(":");
if (first.length < 1 || first.length > 2) {
alert("Wrong number of parameters in first time");
return;
}
second = second.split(":");
if (second.length < 1 || second.length > 2) {
alert("Wrong number of parameters in second time");
return;
}
var first = parseInt(first[0].trim())*60 + parseInt(first[1].trim());
var second = parseInt(second[0].trim())*60 + parseInt(second[1].trim());
var result = 0;
if (operation_plus) {
result = first + second;
} else {
result = first - second;
}
document.getElementById("output").value = result;
}
</script>
<input type="text" id="input">
<input type="button" value="calculate" onClick="calculate();">
<input type="text" id="output" readonly="readonly">
Большое спасибо.
Но есть еще один важный пункт - переход на новые сутки.
Например, если начальное время 23:10, а кончное 1:20, то разница будет 70 минут. По Вашему алгоритму этого не получается, не могли бы Вы это исправить.
(сразу хочу сказать, что интервал от одной временной точки до другой более чем 24 часа мне учитывать не надо)
Еще раз большое спасибо за помощь и за внимание.
Но есть еще один важный пункт - переход на новые сутки.
Например, если начальное время 23:10, а кончное 1:20, то разница будет 70 минут. По Вашему алгоритму этого не получается, не могли бы Вы это исправить.
(сразу хочу сказать, что интервал от одной временной точки до другой более чем 24 часа мне учитывать не надо)
Еще раз большое спасибо за помощь и за внимание.
- Oscar
- Сообщения: 963
- Зарегистрирован: 29 май 2004, 13:44
- Откуда: Мюнхен (рожден в Киеве)
- Контактная информация:
Код: Выделить всё
<script>
String.prototype.trim = function() { return this.replace(/^\s+|\s+$/, ''); };
function calculate() {
var input = document.getElementById("input").value;
var operation_plus;
if (input.match("\\+") != null) {
operation_plus = true;
} else if (input.match("-") != null) {
operation_plus = false;
} else {
alert("Input contains no \"+\" or \"-\" symbol");
return;
}
if (operation_plus) {
input = input.split("+");
} else {
input = input.split("-");
}
if (input.length < 1 || input.length > 2) {
alert("Wrong number of parameters");
return;
}
var first = input[0].trim();
var second = input[1].trim();
first = first.split(":");
if (first.length < 1 || first.length > 2) {
alert("Wrong number of parameters in first time");
return;
}
second = second.split(":");
if (second.length < 1 || second.length > 2) {
alert("Wrong number of parameters in second time");
return;
}
var first_hours = parseInt(first[0].trim());
var second_hours = parseInt(second[0].trim());
if (!operation_plus && first_hours < second_hours) {
first_hours+=24;
}
var first = first_hours*60 + parseInt(first[1].trim());
var second = second_hours*60 + parseInt(second[1].trim());
var result = 0;
if (operation_plus) {
result = first + second;
} else {
result = first - second;
}
document.getElementById("output").value = result;
}
</script>
<input type="text" id="input">
<input type="button" value="calculate" onClick="calculate();">
<input type="text" id="output" readonly="readonly">
Вот это да, не успел написать уже помогли :lol:
Последняя просба уважаемый Оскар.
Нужно чтобы часы и минуты автоматически разделялись двоеточием, т.е. набираем только двузначные числа, а двоеточия разделяют их сами. И чтобы подсчет производился нажатием клавиши ентер.
Т.е. ,например, такой шаблон
**:** - **:**(нажимаем ентер)****(результат в минутах)
И еще одно, действие необходимо только одно - вычитание, его можно задать по умолчанию.
Дело в том, что я работаю на железной дороге маневровым диспетчером, а этот калькулятор очень бы помог в муторных составлениях хронометражных таблиц.
Спасибо за содействие
Последняя просба уважаемый Оскар.
Нужно чтобы часы и минуты автоматически разделялись двоеточием, т.е. набираем только двузначные числа, а двоеточия разделяют их сами. И чтобы подсчет производился нажатием клавиши ентер.
Т.е. ,например, такой шаблон
**:** - **:**(нажимаем ентер)****(результат в минутах)
И еще одно, действие необходимо только одно - вычитание, его можно задать по умолчанию.
Дело в том, что я работаю на железной дороге маневровым диспетчером, а этот калькулятор очень бы помог в муторных составлениях хронометражных таблиц.
Спасибо за содействие
- Oscar
- Сообщения: 963
- Зарегистрирован: 29 май 2004, 13:44
- Откуда: Мюнхен (рожден в Киеве)
- Контактная информация:
calc.html
Код: Выделить всё
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
<title>Калькулятор для составления хронометражных таблиц</title>
<script type="text/javascript">
function getNum(id) {
var f = document.getElementById(id);
if (f == null || isNaN(f.value)) return 0;
return parseInt(f.value);
}
function clear(id) {
var f = document.getElementById(id);
if (f != null)
f.value = "";
}
function x(x) {
return (x < 10)?("0"+x):x;
}
function calculate() {
var first_hours = getNum("first_hours");
var first_minutes = getNum("first_minutes");
var second_hours = getNum("second_hours");
var second_minutes = getNum("second_minutes");
var temp = first_hours;
if (first_hours < second_hours) {
temp += 24;
}
var first = temp*60 + first_minutes;
var second = second_hours*60 + second_minutes;
var result = first - second;
addResult(x(first_hours) + ":" + x(first_minutes) + " - " + x(second_hours) + ":" + x(second_minutes), result);
clear("first_hours");
clear("first_minutes");
clear("second_hours");
clear("second_minutes");
var f = document.getElementById("first_hours");
if (f != null) f.focus();
}
function addResult(r1, r2) {
var tr = document.createElement("TR");
var td = document.createElement("TD");
td.innerHTML = r1;
tr.appendChild(td);
td = document.createElement("TD");
td.innerHTML = " = ";
tr.appendChild(td);
var td = document.createElement("TD");
td.innerHTML = r2;
tr.appendChild(td);
var result = document.getElementById("result");
if (result != null) {
if (result.firstChild == null) {
result.appendChild(tr);
} else {
result.insertBefore(tr, result.firstChild);
}
}
}
function test(elem, nextID) {
if (elem.value.length == 1) {
var a = elem.value.charAt(0);
if (isNaN(a))
elem.value = "";
} else if (elem.value.length >= 2) {
var a = elem.value.charAt(0);
var b = elem.value.charAt(1);
elem.value = "";
if (!isNaN(a))
elem.value += a;
if (!isNaN(b))
elem.value += b;
}
if (elem.value.length == 2) {
if (nextID == "") {
calculate();
} else {
var f = document.getElementById(nextID);
if (f != null) f.focus();
}
}
}
function init() {
var f = document.getElementById("first_hours");
if (f != null) f.focus();
}
</script>
<style type="text/css">
.calc {
border-collapse: collapse;
}
.calc tr {
border: 1px solid #000000;
}
</style>
</head>
<body onload="init();">
Формат ЧЧ:ММ-ЧЧ:ММ
<table class="calc">
<thead>
<tr style="border-width: 0px;"><td colspan="3">
<input type="text" id="first_hours" onkeyup="test(this, 'first_minutes');" size="2" autocomplete="off"> :
<input type="text" id="first_minutes" onkeyup="test(this, 'second_hours');" size="2" autocomplete="off"> -
<input type="text" id="second_hours" onkeyup="test(this, 'second_minutes');" size = "2" autocomplete="off"> :
<input type="text" id="second_minutes" onkeyup="test(this, '');" size = "2" autocomplete="off">
</td></tr>
<tr style="border-width: 0px;"><td colspan="3"></td></tr>
</thead>
<tbody id="result">
</tbody>
</table>
</body>
</html>