kzen.dev
  • Pertanyaan
  • Tag
  • Pengguna
Notifikasi
Imbalan
Registrasi
Setelah Anda mendaftar, Anda akan diberitahu tentang balasan dan komentar untuk pertanyaan Anda.
Gabung
Jika Anda sudah memiliki akun, masuk untuk memeriksa pemberitahuan baru.
Akan ada hadiah untuk pertanyaan, jawaban, dan komentar tambahan.
Lebih
Sumber
Sunting
 user1424332
user1424332
Question

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!

11 2012-05-29T17:40:33+00:00 3
 Wagtail
Wagtail
Pertanyaan edit 7 Juni 2012 в 8:57
Pemrograman
javascript
time
Pertanyaan ini memiliki :value jawaban dalam bahasa Inggris, untuk membacanya masuk ke akun Anda.
Solution / Answer
 VisioN
VisioN
29 Mei 2012 в 6:04
2012-05-29T18:04:55+00:00
Lebih
Sumber
Sunting
#16306570

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:

 GregC
GregC
Jawaban edit 1 Juli 2014 в 11:54
37
0
 Germo
Germo
4 September 2013 в 11:19
2013-09-04T11:19:13+00:00
Lebih
Sumber
Sunting
#16306571

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.

 Germo
Germo
Jawaban edit 12 Oktober 2013 в 10:09
2
0
Abhishek Motiwale
Abhishek Motiwale
15 Desember 2014 в 12:33
2014-12-15T12:33:05+00:00
Lebih
Sumber
Sunting
#16306572

Coba Ini

var dif = ( new Date("1970-1-1 " + end-time) - new Date("1970-1-1 " + start-time) ) / 1000 / 60 / 60;
0
0
Related communities 1
JavaScript Indonesia
JavaScript Indonesia
16 345 pengguna
Grup JavaScript yang membahas JavaScript, framework JS, dan Node JS secara universal. Cek Pinned Message untuk keterangan lebih lanjut. Komunitas ReactJS: https://t.me/react_idn
Buka telegram
Tambahkan pertanyaan
Kategori
Semua
Teknologi
Budaya / Rekreasi
Kehidupan / Seni
Ilmu Pengetahuan
Profesional
Bisnis
Pengguna
Semua
Baru
Populer
1
Daniel Gogov
Terdaftar 6 hari yang lalu
2
工藤 芳則
Terdaftar 1 minggu yang lalu
3
Ирина Беляева
Terdaftar 2 minggu yang lalu
4
Darya Arsenyeva
Terdaftar 2 minggu yang lalu
5
anyta nuam-nuam (LapuSiK)
Terdaftar 2 minggu yang lalu
ID
JA
© kzen.dev 2023
Sumber
stackoverflow.com
di bawah lisensi cc by-sa 3.0 dengan atribusi