Tutorial CodeIgniter : Membuat Helper Untuk Format Tanggal Indonesia di CodeIgniter
Sudah hampir seminggu lebih saya berkutat dengan pekerjaan yang rasanya gak pernah habis, akhirnya jarang bisa posting lagi. Mungkin ini kali yaw rejeki yang diberikan oleh Ida Sang Hyang Widhi Wasa kepada saya :). Yaw walaupun akhirnya saya jarang tidur, jarang kuliah, jarang keluar rumah, badan jadi tambah subur (#haha). Ke kampus cuma untuk mengisi jadwal asisten praktikum, yang makin hari makin semerawut bin acakadut. Mulai dari beberapa dosen yang memanfaatkan ajang asistensi praktikum ini sebagai kesempatan untuk bermalas-malasan, sampai dosen yang (mungkin saking ilmunya tinggi) tidak mau di-asistenkan oleh beberapa mahasiswa yang sudah mendaftarkan diri dan ditunjuk oleh prodi. Kampus saya memang jossssss, walaupun sudah berganti kepemimpinan ternyata tetap saja seperti yang dulu, mungkin kalo pak SBY lihat, beliau akan berkata “Saya prihatin“. Berhubung pikiran saya mumet, jadilah saya pulang ke bali untuk refreshing sejenak. Kebetulan juga besok ibu saya ulang tahun, sekalian ingin mengajak beliau makan-makan di luar pake uang hasil kerja selama beberapa minggu ini.
Nah, sesuai judul postingan di atas, saya malam ini akan membagikan sebuah trik sederhana untuk membuat sebuah helper untuk menampilkan tanggal ke dalam format indonesia. Ini saya gunakan ketika saya membuat sebuah aplikasi website beberapa minggu yang lalu, dimana yang punya web ingin menampilkan format tanggal indonesia. Selain itu, si doi juga ingin menampilkan jarak dari waktu sekarang (tanggal dan waktu sekarang) dengan waktu yang telah ditentukan di waktu sebelumnya . Misalnya tanggal 23-11-2010 (tanggal jadian sama mantan dulu #haha, mendadak #galau), nanti dihitung dari sekarang jadinya sudah berlalu berapa tahun, bulan, minggu, hari, jam, menit. Tapi untuk kasus yang ini, cuma dibatasi 2 variabel saja. Daripada pusing, ayookk kita langsung ke pembuatan helper dan cara penggunaannya di CodeIgniter.
Disini saya membuat 4 buah function, yaitu function tgl_indo(), function bulan() yang akan dipanggil di dalam function tgl_indo(), function nama_hari() dan function hitung_mundur(). Saya kelompokkan menjadi 1 file helper seperti kode PHP di bawah ini :
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed'); if ( ! function_exists('tgl_indo')) { function tgl_indo($tgl) { $ubah = gmdate($tgl, time()+60*60*8); $pecah = explode("-",$ubah); $tanggal = $pecah[2]; $bulan = bulan($pecah[1]); $tahun = $pecah[0]; return $tanggal.' '.$bulan.' '.$tahun; } } if ( ! function_exists('bulan')) { function bulan($bln) { switch ($bln) { case 1: return "Januari"; break; case 2: return "Februari"; break; case 3: return "Maret"; break; case 4: return "April"; break; case 5: return "Mei"; break; case 6: return "Juni"; break; case 7: return "Juli"; break; case 8: return "Agustus"; break; case 9: return "September"; break; case 10: return "Oktober"; break; case 11: return "November"; break; case 12: return "Desember"; break; } } } if ( ! function_exists('nama_hari')) { function nama_hari($tanggal) { $ubah = gmdate($tanggal, time()+60*60*8); $pecah = explode("-",$ubah); $tgl = $pecah[2]; $bln = $pecah[1]; $thn = $pecah[0]; $nama = date("l", mktime(0,0,0,$bln,$tgl,$thn)); $nama_hari = ""; if($nama=="Sunday") {$nama_hari="Minggu";} else if($nama=="Monday") {$nama_hari="Senin";} else if($nama=="Tuesday") {$nama_hari="Selasa";} else if($nama=="Wednesday") {$nama_hari="Rabu";} else if($nama=="Thursday") {$nama_hari="Kamis";} else if($nama=="Friday") {$nama_hari="Jumat";} else if($nama=="Saturday") {$nama_hari="Sabtu";} return $nama_hari; } } if ( ! function_exists('hitung_mundur')) { function hitung_mundur($wkt) { $waktu=array( 365*24*60*60 => "tahun", 30*24*60*60 => "bulan", 7*24*60*60 => "minggu", 24*60*60 => "hari", 60*60 => "jam", 60 => "menit", 1 => "detik"); $hitung = strtotime(gmdate ("Y-m-d H:i:s", time () +60 * 60 * 8))-$wkt; $hasil = array(); if($hitung<5) { $hasil = 'kurang dari 5 detik yang lalu'; } else { $stop = 0; foreach($waktu as $periode => $satuan) { if($stop>=6 || ($stop>0 && $periode<60)) break; $bagi = floor($hitung/$periode); if($bagi > 0) { $hasil[] = $bagi.' '.$satuan; $hitung -= $bagi*$periode; $stop++; } else if($stop>0) $stop++; } $hasil=implode(' ',$hasil).' yang lalu'; } return $hasil; } }
- Function bulan() berisi selection menggunakan switch untuk menentukan nama bulan sesuai parameter yang dimasukkan, kemudian dipanggil di function tgl_indo() untuk diatur formatnya.
- Function nama_hari() juga bersisikan selection dengan menggunakan if, dimana tanggal yang dimasukkan melalui parameter di-explode terlebih dahulu. Kemudian dicari waktunya dengan menggunakan fungsi mktime(). Hasilnya masih berupa bahasa inggris, kemudian di seleksi menggunakan if.
- Yang terakhir function hitung_mundur(), mirip dengan fitur di facebook yang memberitahukan jarak waktu status tersebut dibuat dengan waktu sekarang. Waktu yang diinputkan, saya konversikan dulu ke bentuk integer dengan perintah strtotime(). Kemudian dibagi variabel array waktu, yang di dalamnya terdapat nilai untuk menentukan apakah itu tahun, bulan, hari dan sebagainya.
Cara penggunaannya juga sederhana, yaitu dengan memanggil nama helper dan memanggil nama-nama function di atas. Jangan lupa untuk memasukkan parameternya.
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed'); class Tanggal extends CI_Controller { function __construct() { parent::__construct(); $this->load->helper('tgl_indonesia'); } function index() { echo nama_hari('2010-11-23').' '. tgl_indo('2010-11-23'); echo "<br>"; echo hitung_mundur(strtotime('2010-11-23')); } }
outputnya akan terlihat seperti berikut :
Selasa 23 November 2010
1 tahun 7 bulan 1 hari 23 jam 26 menit yang lalu
Wah, setelah dihitung-hitung saya baru sadar, ternyata lama juga saya menjomblo ;). Function hitung_mundur() sebenarnya sangat sederhana sekali, mirip dengan tugas algoritma & pemrograman di semester 1 saya dulu, dimana pak dosen menugaskan untuk mencari berapa jam, menit dan detik dari inputan waktu yang dimasukkan. Cuma untuk kasus yang kali ini, ditambah menjadi berapa tahun, bulan, minggu dan hari. OK deh, semoga sedikit trik sederhana ini bisa bermanfaat untuk kita semua.
Happy Blogging and Keep Coding