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!
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 <= 9 ? "0" : "") + hours + ":" + (minutes <= 9 ? "0" : "") + minutes;
}
DEMO:
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.