Apa cara terbaik untuk menghitung jumlah total detik antara dua tanggal? Sejauh ini, saya telah mencoba sesuatu di sepanjang baris:
$delta = $date->diff(new DateTime('now'));
$seconds = $delta->days * 60 * 60 * 24;
Namun, days
properti objek DateInterval tampaknya rusak dalam build PHP5.3 saat ini (setidaknya di Windows, ia selalu mengembalikan nilai yang sama 6015
). Saya juga mencoba melakukannya dengan cara yang tidak dapat mempertahankan jumlah hari dalam setiap bulan (putaran menjadi 30), tahun kabisat, dll:
$seconds = ($delta->s)
+ ($delta->i * 60)
+ ($delta->h * 60 * 60)
+ ($delta->d * 60 * 60 * 24)
+ ($delta->m * 60 * 60 * 24 * 30)
+ ($delta->y * 60 * 60 * 24 * 365);
Tapi saya benar-benar tidak senang menggunakan solusi setengah-setengah ini.
$delta->format("%r%s")
?format
adalah ketika mengatakan jumlah detik adalah 0 sedangkan jumlah menit adalah 1,$delta->format("%r%s")
ternyata 0 :(Jawaban:
Bisakah Anda tidak membandingkan cap waktu ?
sumber
getTimestamp()
metode ini tersedia dalam PHP> = 5.3.0.format('U')
sajagetTimestamp()
.Fungsi ini memungkinkan Anda untuk mendapatkan total durasi dalam hitungan detik dari objek DateInterval
sumber
$endTime
dan$reference
satu sama lain, karena ini memberi saya hasil minus dengan nilai datetime interval masa depan.Anda bisa melakukannya seperti ini:
time () mengembalikan waktu saat ini dalam detik sejak waktu epoch (1970-01-01T00: 00: 00), dan strtotime melakukan hal yang sama, tetapi berdasarkan tanggal / waktu tertentu yang Anda berikan.
sumber
sumber
Selalu terasa menyenangkan ketika yang Anda butuhkan sudah ada di kelas. Dalam kasus Anda, Anda membutuhkan total jumlah detik. Mengapa tidak membuat kelas dari itu? Kode tersebut akan terlihat seperti ini:
Selain intuitif, Anda juga bisa memanfaatkan fasilitas pelengkapan otomatis IDE Anda.
Untuk implementasi yang lebih berguna, Anda dapat melihat pustaka ini .
sumber
Anda bisa memasukkan angka pasti (bukan 60 * 60 - masukkan 3600) sehingga tidak perlu menghitungnya setiap saat.
Edit - perbaiki nomor berdasarkan komentar Anda.
sumber