Menghitung Perbedaan Waktu dengan JavaScript

Saya memiliki dua kotak input HTML, yang perlu menghitung perbedaan waktu dalam JavaScript onBlur (karena saya membutuhkannya dalam waktu nyata) dan memasukkan hasilnya ke kotak input baru.

Contoh format: 10:00 & 12:30 perlu memberi saya: 02:30

Terima kasih!

Larutan

Berikut ini adalah salah satu solusi yang mungkin:


function diff(start, end) {
    start = start.split(":");
    end = end.split(":");
    var startDate = new Date(0, 0, 0, start[0], start[1], 0);
    var endDate = new Date(0, 0, 0, end[0], end[1], 0);
    var diff = endDate.getTime() - startDate.getTime();
    var hours = Math.floor(diff / 1000 / 60 / 60);
    diff -= hours * 1000 * 60 * 60;
    var minutes = Math.floor(diff / 1000 / 60);

    // If using time pickers with 24 hours format, add the below line get exact hours
    if (hours < 0)
       hours = hours + 24;

    return (hours 
Komentar (1)

Nah, cara ini hampir berhasil. Sekarang gunakan kode ini untuk menghitung: 23:50 - 00:10 dan lihat apa yang Anda dapatkan, atau bahkan 23:30 - 01:30. Itu sangat berantakan. Karena mendapatkan jawaban dengan cara lain di php adalah:

$date1 = strtotime($_POST['started']);
$date2 = strtotime($_POST['ended']);
$interval = $date2 - $date1;
$playedtime = $interval / 60;

Tapi tetap saja, ini bekerja seperti milikmu. Saya kira harus membawa tanggal juga?

Dan lagi: Penelitian dan pengembangan saya yang keras membantu saya.

if (isset($_POST['calculate'])) {
$d1 = $_POST['started'];
$d2 = $_POST['ended'];
if ($d2 < $d1) {
    $date22 = date('Y-m-');
    $date222 = date('d')-1;
    $date2 = $date22."".$date222;
} else {
$date2 = date('Y-m-d');
}
$date1 = date('Y-m-d');
$start_time = strtotime($date2.' '.$d1);
$end_time = strtotime($date1.' '.$d2); // or use date('Y-m-d H:i:s') for current time
$playedtime = round(abs($start_time - $end_time) / 60,2);
}

Dan itulah cara Anda menghitung waktu ke hari berikutnya. //edit. Pertama saya memiliki tanggal1 dan tanggal2 yang tertukar. Saya perlu -1 karena perhitungan ini hanya muncul pada hari berikutnya dan tanggal pertama adalah kemarin.

Setelah memperbaiki dan banyak memutar otak dengan teman saya, kami sampai pada hal ini:

$begin=mktime(substr($_GET["start"], 0,2),substr($_GET["start"], 2,2),0,1,2,2003);
$end=mktime(substr($_GET["end"], 0,2),substr($_GET["end"], 2,2),0,1,3,2003);
$outcome=($end-$begin)-date("Z");
$minutes=date("i",$outcome)+date("H",$outcome)*60; //Echo minutes only
$hours = date("H:i", $outcome); //Echo time in hours + minutes like 01:10 or something.

Jadi, Anda sebenarnya hanya membutuhkan 4 baris kode untuk mendapatkan hasil. Anda dapat mengambil hanya beberapa menit atau menunjukkan waktu penuh (seperti selisih 02:32) 2 jam 32 menit. Yang paling penting: Anda tetap dapat menghitung semalam dalam jam 24 jam alias: Waktu mulai pukul 11:50 malam hingga pukul 01:00 pagi (dalam jam 24 jam 23:50 - 01:00) karena dalam mode 12 jam, ini tetap berfungsi.

Yang paling penting: Anda tidak perlu memformat input Anda. Anda dapat menggunakan 2300 biasa saja sebagai masukan pukul 23:00. Skrip ini akan mengubah input bidang teks ke format yang benar dengan sendirinya. Skrip terakhir menggunakan bentuk html standar dengan method="get", namun Anda juga dapat mengubahnya menggunakan metode POST.

Komentar (1)

Coba Ini

var dif = ( new Date("1970-1-1 " + end-time) - new Date("1970-1-1 " + start-time) ) / 1000 / 60 / 60;
Komentar (0)