ARI JULIANTO Network www.arijulianto.com

Oleh | PHP | | Dibaca 6.170 kali | 0 komentar

Selamat malam sahabat AJN semua... Kali ini saya akan mencoba berbagi sebuah teknik format ulang tanggal di PHP. Hal ini sangat diperlukan pada saat pengolahan data yang diambil dari database. Sebelumnya perlu saya sampaikan bahwasanya sangat dianjurkan format tanggal asal (yang ingin diubah format) haruslah menggunakan format Y-m-d (0000-00-00), contoh: 2013-11-09. Oke kita langsung aja ke pembahasannya.

Fungsi yang kita butuhkan dalam hal ini adalah fungsi date() dan strtotime(). Untuk fungsi date() kita diharuskan mengetahui terlebih dahulu kode-kode untuk tanggal, bulan dan tahunnya. Yuk kita coba pelajari dari sebuah contoh seperti berikut

$tgl = "2013-11-09"; // bisa juga diambil dari sumber database
$tanggal = date("d/m/Y",strtotime($tgl));

echo "Format tanggal awal: $tgl<br />";
echo "Format tanggal baru: $tanggal";

Sudah, begitu saja triknya. Gimana mudah bukan??? yuk kita coba dengan berbagai format lainnya!

$tgl = "2013-11-09"; // bisa juga diambil dari sumber database
$tgl1 = date("d/m/Y",strtotime($tgl));
$tgl2 = date("d-M-Y",strtotime($tgl));
$tgl3 = date("d-m-Y",strtotime($tgl));
$tgl4 = date("j F Y",strtotime($tgl));
$tgl5 = date("d/m/y",strtotime($tgl));

echo "Tanggal: $tgl<br />";
echo "Format 1: $tgl1<br />";
echo "Format 2: $tgl2<br />";
echo "Format 3: $tgl3<br />";
echo "Format 4: $tgl4<br />";
echo "Format 5: $tgl5<br />";

Dan hasilnya adalah

Tanggal: 2013-11-09
Format 1: 09/11/2013
Format 2: 09-Nov-2013
Format 3: 09-11-2013
Format 4: 9 November 2013
Format 5: 09/11/13

Apakah Format Tanggal selain Y-m-d Bisa Diformat Ulang?

Pada dasarnya, semua format tanggal bisa diolah lagi, namun yang jadi permasalahan adalah format inputannya. Bila urutan tanggalnya bukan tahun bulan tanggal (baik dengan pemisah maupun tanpa pemisah), masilnya dipastikan akan akurat. Tapi akan bermasalah jika formatnya tanggal bulan tahun atau bulan tanggal tahun atau menggunakan format tahun 2 angka, dan maka dari itulah saya menganjurkan sahabat AJN semua untuk selalu menggunakan format Y-m-d bila disimpan ke database dengan tujuan jika suatu saat nanti butuh format ulang maka bisa dilakukan secara mudah.

Teknik 1: Menggunakan explode()

Di teknik pertama ini menggunakan teknik fungsi explode(). Teknik ini data tanggal akan dipisah menjadi beberapa bagian (tergantung format inputan), jika format inputannya diikuti jam, maka dipecah dulu. Yuk kita lihat dalaam contoh script berikut

<?php
$data1 = "07/11/2013";
$data2 = "18/09/2013 17:25";;
$data3 = "11.02.2013";
$bulan = array(1=>"Januari", "Februari", "Maret", "April", "Mei", "Juni", "juli", "Agustus", "September", "Oktober", "November", "Desember");

$e1 = explode("/", $data1);
$e2 = explode(" ", $data2);
$e2 = explode("/", $e2[0]);
$e3 = explode(".", $data3);

$format1 = strval($e1[0])." ".$bulan[strval($e1[1])]." ".$e1[2];
$format2 = "$e1[2]-$e1[1]-$e1[0]";
?>

Teknik di atas dimanfaatkan untuk mengolah website yang memerlukan pengolahan tanggal tapi inputan webnya menggunakan format tanggal lokal dengan maksud memudahkan user dalam proses inputing data. Dengan trik tersebut akan didapatkan win win solution, yakni nyaman bagi user (tidak dipaksa menggunakan format Y-m-d yang berbau programmer) tapi mudah juga bagi kita dalam mengelolanya, tidak kerepotan

Teknik 2: Menggunakan preg_replace()

Teknik kedua ini jauh lebih simpel. Namun format dengan preg_replace() ini hanya mengubah format saja tanpa melakukan format ulang pada inputan. Dengan kata lain teknik kedua ini hanya mengubah posisi atau separatornya saja. Yuk kita lihat dalam contoh script berikut

<?php
$tgl_lahir = "31/07/1988";
$formatted = preg_replace("/(\d{2})\/(\d{2})\/(\d{4})/","$3-$2-$1",$tgl_lahir);

echo $formatted;
?>

Jelas terlihat kan bahwa fungsi preg_replace(pattern, new_format, strin) hanya mengubah format saja. Fungsi ini sangat bermanfaat untuk mengubah input tanggal lokal ke input tanggal standar untuk selanjutnya disimpan ke database