Bagaimana ya cara mencari selisih waktu dengan Jquery

Mau tanya temen2, saya sudah berhasil menghitung selisih waktu dengan Jquery, tapi saya ingin kasih kondisi jika jam 12:00 s/d jam 13:00 itu tidak di hitung, misalkan selisih waktu dari jam 10:00 s/d 14:00 itu kan selisihnya 04:00 tapi karena dia melewati jam 12:00 s/d jam 13:00 jadi selisihnya cuma 03:00 gimana ya caranya biar otomatis tidak menghitung, ini script saya untuk mencari selisih waktu :


$("input").keyup(function(){
    var timeOfCall = $('#timeOfCall').val(),
        timeOfResponse = $('#timeOfResponse').val(),

     hours = timeOfResponse.split(':')[0] - timeOfCall.split(':')[0],
        minutes = timeOfResponse.split(':')[1] - timeOfCall.split(':')[1];

    minutes = minutes.toString().length<2?'0'+minutes:minutes;
    if(minutes<0){
        hours--;
        minutes = 60 + minutes;
    }
    hours = hours.toString().length<2?'0'+hours:hours;

    $('#delay').val(hours + ':' + minutes);
});

avatar ridwan14
@ridwan14

36 Kontribusi 10 Poin

Diperbarui 7 tahun yang lalu

6 Jawaban:

ada fullscript htmlnya?

avatar CodenameJR
@CodenameJR

278 Kontribusi 107 Poin

Dipost 7 tahun yang lalu

Ada Mas ini HTMLnya :


<input type="time" id="timeOfCall" >
<input type="time" id="timeOfResponse">

<input type="time" id="delay">

avatar ridwan14
@ridwan14

36 Kontribusi 10 Poin

Dipost 7 tahun yang lalu

Jawaban Terpilih

Saya bingung mas kalo AM & PM kalo inputanya text, mungkin ini bisa



<!DOCTYPE html>
<html>
<head>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script>
<script>
$(document).ready(function(){
$("input").keyup(function(){
    var timeOfCall = $('#timeOfCall').val(),
        timeOfResponse = $('#timeOfResponse').val(),
     hours = timeOfResponse.split(':')[0] - timeOfCall.split(':')[0],
        minutes = timeOfResponse.split(':')[1] - timeOfCall.split(':')[1];

    if (timeOfCall <= "12:00:00" && timeOfResponse >= "13:00:00"){
    	a = 1;
    } else {
    	a = 0;
    }
    minutes = minutes.toString().length<2?'0'+minutes:minutes;
    if(minutes<0){
        hours--;
        minutes = 60 + minutes;
    }
    hours = hours.toString().length<2?'0'+hours:hours;

    $('#delay').val(hours-a+ ':' + minutes);
});
});
</script>
</head>
<body>

<input type="text" id="timeOfCall" >
<input type="text" id="timeOfResponse">

<input type="text" id="delay">
</body>
</html>


atau https://jsfiddle.net/z596qc8k/

avatar CodenameJR
@CodenameJR

278 Kontribusi 107 Poin

Dipost 7 tahun yang lalu

coba ini barangkali sesuai


var start_actual_time  =  "01/01/2017 10:00";
var end_actual_time    =  "01/01/2017 14:00";

start_actual_time = new Date(start_actual_time);
end_actual_time = new Date(end_actual_time);

var hours_start = start_actual_time.getHours();
var minutes_start = start_actual_time.getMinutes();

var hours_end = end_actual_time.getHours();
var minutes_end = end_actual_time.getMinutes();

var hours = 0;
var minutes = 0;

for (i=hours_start; i <= hours_end; i++){
	if(i != 12 && i != 13){
	  console.log(i);
		hours = hours + 1;
    minutes = minutes_end - minutes_start;
	}
}

alert(hours + ' hours ' + minutes + ' minutes ');

avatar gunalirezqimauludi
@gunalirezqimauludi

350 Kontribusi 243 Poin

Dipost 7 tahun yang lalu

mas @CodenameJR itu ko ketika di input di input text yang rumusnya gak berjalan tapi ketika pertama kali input : ini rumus berjalan, itu kenapa ya ?

avatar ridwan14
@ridwan14

36 Kontribusi 10 Poin

Dipost 7 tahun yang lalu

Karena perhitungan rumusnya menggunakan dua inputan, kalau baru satu yang diinput, rumusnya belum jalan sepenuhnya mas.

avatar CodenameJR
@CodenameJR

278 Kontribusi 107 Poin

Dipost 7 tahun yang lalu

Login untuk ikut Jawaban