#javascript #html
#javascript #HTML
Вопрос:
Мы используем стороннее веб-приложение, которое показывает только количество минут раньше (относительно окончания льготного периода), а не ваше время входа в систему. Я работаю над кодом, который показывает ваше время входа в систему на основе количества минут раньше, пока мы разрабатываем предлагаемые изменения для поставщика стороннего веб-приложения.
Мне удалось получить время входа в систему, но я не смог получить ожидаемое время выхода из системы, то есть через 9 часов (в идеале!).).
Например, если ожидается, что я войду в систему до 9:00 утра, а я прихожу на 30 минут раньше, то мое время входа в систему составляет 8:30 утра, а ожидаемое время выхода из системы — 5:30 вечера. На странице отображаются одинаковые выходные данные для времени входа и выхода из системы. Должна быть проблема с добавлением минут к дате.
function getLoginTime(endofGP, minutes) {
var d = new Date();
const msperminute = 60000;
minutes = document.getElementById("minutesearly").value;
var endOption = document.getElementById("end").value;
if (endOption == "1") {
endofGP = new Date(d.getFullYear(), d.getMonth(), d.getDate(), 8, 0, 0, 0);
} else if (endOption == "2") {
endofGP = new Date(d.getFullYear(), d.getMonth(), d.getDate(), 8, 30, 0, 0);
} else if (endOption == "3") {
endofGP = new Date(d.getFullYear(), d.getMonth(), d.getDate(), 9, 0, 0, 0);
} else if (endOption == "4") {
endofGP = new Date(d.getFullYear(), d.getMonth(), d.getDate(), 9, 30, 0, 0);
} else if (endOption == "5") {
endofGP = new Date(d.getFullYear(), d.getMonth(), d.getDate(), 10, 0, 0, 0);
}
var login = new Date(endofGP - (minutes * msperminute)); //Get log in time
var logout = new Date(login (540 * msperminute)); //Get expected log out time
document.getElementById("logintime").innerHTML = login;
document.getElementById("logouttime").innerHTML = logout;
}
function clearMinutes() {
document.getElementById("minutesearly").value = "";
}
<h2>GET LOG IN TIME</h2>
<form autocomplete="off">
<label for="end">Select End of Grace Period</label><br>
<select id="end" name="end" onchange = "clearMinutes()">
<option value="">Please select</option>
<option value="1">8:00 AM</option>
<option value="2">8:30 AM</option>
<option value="3">9:00 AM</option>
<option value="4">9:30 AM</option>
<option value="5">10:00 AM</option>
</select><br>
<label for="minutesearly">Minutes Early</label><br>
<input type="number" id="minutesearly" oninput = "getLoginTime()"><br>
</form>
<p id="logintime">LOG IN TIME</p>
<p id="logouttime">LOG OUT TIME</p>
Ответ №1:
Я немного упростил функцию, чтобы избежать всех операторов if, поскольку нам действительно нужно только захватить текст параметров, чтобы получить различные компоненты, необходимые для создания объекта date.
Затем мы используем setMinutes
, чтобы добавить 9 часов к времени входа в систему
function loginTime(){
let d = new Date();
let minutes = document.getElementById('minutesearly').value || 0;
const msperminute = 60000;
let end = document.getElementById('end');
let endValue = end.options[end.selectedIndex].text
let hour = endValue.split(':')[0];
let minute = endValue.split(':')[1].replace(/AMb/g,'').trim() || 0;
let endGP = new Date(d.getFullYear(), d.getMonth(), d.getDate(), hour, minute, 0, 0);
let login = new Date(endGP - (minutes * msperminute)); //Get log in time
let logout = new Date ( login );
logout.setMinutes(logout.getMinutes() 540 );
document.getElementById("logintime").innerHTML = login;
document.getElementById("logouttime").innerHTML = logout;
}
<h2>GET LOG IN TIME</h2>
<form autocomplete="off">
<label for="end">Select End of Grace Period</label><br>
<select id="end" name="end" onchange = "loginTime()">
<option value="">Please select</option>
<option value="1">8:00 AM</option>
<option value="2">8:30 AM</option>
<option value="3">9:00 AM</option>
<option value="4">9:30 AM</option>
<option value="5">10:00 AM</option>
</select><br>
<label for="minutesearly">Minutes Early</label><br>
<input type="number" id="minutesearly" oninput = "loginTime()"><br>
</form>
<p id="logintime">LOG IN TIME</p>
<p id="logouttime">LOG OUT TIME</p>