Menghitung dan Menampilkan Selisih Waktu di YII

Menghitung dan Menampilkan Selisih Waktu Dalam Satuan Menit di YII - Cara Mengambil data waktu dari database untuk menghitung selisih waktu antara jam mulai dan jam berakhir dalam satuan menit menggunakan PHP dengan framework YII.

Untuk melakukan perbandingan antara 2 waktu dan menampilkannya dalam satuan menit di YII sangat mudah, caranya hampir sama dengan mekanisme pengkodean di PHP pada umumnya, yaitu menggunakan fungsi strotime, abs dan round.

Langkah Pertama
Membuat fungsi yang dapat menghitung perbandingan tanggal yang disimpan dan diletakan pada model, disini saya akan mengambil study kasus "Menghitung Durasi Waktu Progress Pengerjaan Aktifitas dan Menampilkannya dalam Satuan Menit", seperti preview dibawah ini:



Dapat dijelaskan dalam gambar tersebut merupakan kasus rincian aktivitas pekerjaan dimana ada nama pekerjaan (job), waktu mulai dan waktu selesai (ditampilkan dalam tanggal dan jam), kemudian durasi progress pengerjaan.

Nah disini kita akan menghitung berapa durasi waktu yang dikerjakan berdasarkan dari waktu mulai dan waktu selesai yang ada di database ? Caranya silahkan buka salahsatu model yang telah di buat menggunakan CRUD, sebagai contoh saya menggunakan model dengan nama Projectdetail.php
nama_aplikasi\protected\models\Projectdetail.php

Kemudian sisipkan kode fungsi berikut untuk menghitung perbandingan waktu dalam satuan menit, saya share 2 script fungsi, tinggal pilih salahsatu: 

public function hitungMenit($mulai,$berakhir){
$interval  = abs(strtotime($berakhir) - strtotime($mulai));
$menit   = round($interval / 60);
return 'Durasi: '.$menit.' Menit'; }
atau
public function selisihWaktu($mulai,$berakhir){
$waktu1 = strtotime($mulai);
$waktu2 = strtotime($berakhir);
return 'Durasi: '.round(abs($waktu1 - $waktu2) / 60,2). ' Menit'; }

Langkah Kedua
Bagaimana cara memanggil fungsi tersebut ? Bagaimana cara menampilkannya di View ? Untuk implementasinya bisa di tampilkan di admin.php (tepatnya pada widget CGridview) atau view.php (tepatnya pada widget CDetailview) atau index.php (pada widget CListView)

Sebagai contoh disini saya akan menampilkannya dalam Widget CGridview (bentuk tabel), dan tinggal silahkan sisipkan kode berikut pada bagian CGridview:
  array(
    'header'=>'Progress Pengerjaan',
 'value'=>'Projectdetail::model()->hitungMenit($data->waktu_mulai,$data->waktu_berakhir)',
    ), 

Dapat saya jelaskan dalam script diatas terdapat 2 fungsi, yang pertama ada header (untuk menampilkan judul kolom), ada value (untuk menampilkan nilai yang akan di tampilkan),
Projectdetail::model()->hitungMenit($data->waktu_mulai,$data->waktu_berakhir)
Ini berarti memanggil model dengan nama Projectdetail, kemudian memanggil method dengan nama hitung menit, di tambah fungsi dengan parameter waktu mulai, dan waktu berakhir di tandai dengan $data->waktu_mulai dan $data->waktu_berakhir.

Demikian dapat saya sampaikan apabila ada yang ditanyakan silahkan berkomentar dibawah atau email di mugirachmat@infomugi.com, semoga bermanfaat. 
Mau Tanya ? Silahkan Klik Disini

0 comments