it-swarm-id.com

Hitung waktu yang berlalu di php

Hai Semua Saya mencoba menghitung waktu yang berlalu di php. Masalahnya bukan di php, itu dengan kemampuan matematika saya. Misalnya: Waktu Dalam: 11:35:20 (jj: mm: dd), sekarang katakan waktu saat ini adalah: 12:00:45 (jj: mm: dd) maka perbedaan waktu dalam rumus saya memberikan output: 1: -34: 25 . Seharusnya: 25:25

$d1=getdate();
$hournew=$d1['hours'];
$minnew=$d1['minutes'];
$secnew=$d1['seconds'];

$hourin = $_SESSION['h'];
$secin = $_SESSION['s'];
$minin = $_SESSION['m'];

$h1=$hournew-$hourin;
$s1=$secnew-$secin;
$m1=$minnew-$minin;

if($s1<0) {
    $s1+=60; }
if($s1>=(60-$secin)) {
    $m1--;  }
if($m1<0) {
    $m1++; }
echo $h1 . ":" . $m1 . ":" . $s1;

Tolong ada bantuan?

EDIT

Maaf saya mungkin harus menambahkan bahwa halaman di-refresh setiap detik untuk menampilkan waktu yang baru berlalu jadi saya harus menggunakan metode saya di atas. Maafkan saya karena tidak menjelaskan dengan benar.

24
Wilest

Ini akan memberi Anda jumlah detik antara awal dan akhir.

<?php

// microtime(true) returns the unix timestamp plus milliseconds as a float
$starttime = microtime(true);
/* do stuff here */
$endtime = microtime(true);
$timediff = $endtime - $starttime;

?>

Untuk menampilkannya dengan gaya jam setelahnya, Anda akan melakukan sesuatu seperti ini:

<?php

// pass in the number of seconds elapsed to get hours:minutes:seconds returned
function secondsToTime($s)
{
    $h = floor($s / 3600);
    $s -= $h * 3600;
    $m = floor($s / 60);
    $s -= $m * 60;
    return $h.':'.sprintf('%02d', $m).':'.sprintf('%02d', $s);
}

?>

Jika Anda tidak ingin menampilkan angka setelah desimal, cukup tambahkan round($s); ke awal fungsi secondsToTime().

44
Crontab

Menggunakan PHP >= 5.3 Anda bisa menggunakan DateTime dan metode DateTime::diff() , yang mengembalikan objek DateInterval :

$first  = new DateTime( '11:35:20' );
$second = new DateTime( '12:00:45' );

$diff = $first->diff( $second );

echo $diff->format( '%H:%I:%S' ); // -> 00:25:25
20
Decent Dabbler

Pantau waktu Anda menggunakan fungsi 'waktu ()' . Anda nanti dapat mengonversi 'waktu ()' ke format lain.

$_SESSION['start_time'] = time();

$end_time = time();

$end_time - $_SESSION['start_time'] = 65 seconds (divide by 60 to get minutes)

Dan kemudian Anda bisa membandingkannya dengan nilai lain nanti.

Gunakan waktu mikro jika Anda membutuhkan detail milidetik.

7
donutdan4114

Anda dapat mengimplementasikan solusi yang ditunjukkan, tapi saya suka menggunakan kelas phptimer (atau yang lain, roda ini telah ditemukan beberapa kali). Keuntungannya adalah Anda biasanya dapat menentukan timer untuk aktif atau tidak, sehingga memungkinkan Anda untuk meninggalkan panggilan timer dalam kode Anda untuk referensi nanti tanpa memasukkan kembali semua titik waktu.

0
Duane Gran