Посчитайте часы с 22:00 (сегодня) до 06:00 (завтра) с помощью jQuery - PullRequest
0 голосов
/ 08 октября 2018

Я хочу рассчитать часы между 22:00 (сегодня) и 06:00 (завтра) с помощью javascript или jquery.Если время начала = 23:10 и время остановки = 05:20, рабочее время должно быть 06:10, потому что с 23:10 (сегодня) до 05:20 (завтра) есть 06:10 часов.

У меня есть два поля ввода:

<input type="text" name="startTime" autocomplete="off" style="display:inline;width: 90px;" id="startTime" class="timepicker"/>

<input type="text" name="stopTime" autocomplete="off" style="display: inline;width: 90px;" id="stopTime" class="timepicker1"/>

Мой код JavaScript:

var start_time = $('#startTime').val();
var end_time = $('#stopTime').val();


var diff = ( new Date("1970-1-1 " + end_time) - new Date("1970-1-1 " + start_time) ) / 60000 / 60;


var decimalTimeString = diff;
var n = new Date(0,0);
n.setSeconds(+decimalTimeString * 60 * 60);
var test = n.toTimeString().slice(0, 8);


$('#workingValue').val(test);

Этот код JavaScript работает, но рассчитывает только часы с 00:00 до 23:45 например, если время начала = 00:00 и время остановки = 23:45 workingValue = 23:45, что правильно.Но если время начала 22:00 (например), время остановки 01:00, мое рабочее значение неверно.Это возвращает меня 00:00, но должно быть 03:00.Помогите мне решить проблему, пожалуйста!PS Извините за мой английский, но это не очень хорошо!

Ответы [ 3 ]

0 голосов
/ 08 октября 2018

вы можете использовать момент
в фрагменте вы можете показать пример

let now  = "10/10/2018 15:00:00";
let then = "07/10/2018 14:20:30";

let ms = moment(now,"DD/MM/YYYY HH:mm:ss").diff(moment(then,"DD/MM/YYYY HH:mm:ss"));
let d = moment.duration(ms);
let s = Math.floor(d.asHours()) + moment.utc(ms).format(":mm:ss");

document.getElementById("time").innerText = s
<script src="https://momentjs.com/downloads/moment.js"></script>

<div id="time"></div>
0 голосов
/ 08 октября 2018

Используя информацию из вашего поста, т.е. у вас есть только две строки времени без информации о дате, вы можете сделать следующее в Vanilla JavaScript:

const ge=id=>document.getElementById(id);
const res=ge('result'), st=ge('start'), en=ge('end');
document.forms[0].addEventListener('keyup',function(el){
  res.innerHTML=new Date(new Date('1970-1-2 '+en.value)
                        -new Date('1970-1-1 '+st.value)).toGMTString().substr(17,5);
})
<form>
<input id="start" value="22:30"> start<br>
<input id="end" value="2:00"> end<br>
</form>
<div id="result"></div>
0 голосов
/ 08 октября 2018

Когда вы вычисляете это вычисление с 00: 00 и 23: 45 , это дает положительный результат все в порядке, но в противоположном случае, скажем, 23: 45 00: 00 это даст минус результат

var diff = ( new Date("1970-1-1 " + end_time) - new Date("1970-1-1 " + start_time) ) / 60000 / 60;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...