Abe Tobing

Web developer, local musician and a beer lover

Function indonesian_date() Untuk Menampilkan Tanggal dalam Format Indonesia

Fungsi date yang disediakan oleh php nampaknya tidak bisa menyediakan fitur untuk "melokalkan"-nya ke format tanggal Indonesia yang biasanya di tampilkan seperti Senin, 11 Januari 2002.

Jadi untuk memudahkan anda para programmer PHP untuk menampilkan tanggal dalam format Indonesia seperti diatas, saya mencoba membaginya kepada anda. Kodenya cukup sederhana, hanya beberapa baris saja, berikut kodenya:

function indonesian_date ($timestamp = '', $date_format = 'l, j F Y | H:i', $suffix = 'WIB') {
	if (trim ($timestamp) == '')
	{
			$timestamp = time ();
	}
	elseif (!ctype_digit ($timestamp))
	{
		$timestamp = strtotime ($timestamp);
	}
	# remove S (st,nd,rd,th) there are no such things in indonesia :p
	$date_format = preg_replace ("/S/", "", $date_format);
	$pattern = array (
		'/Mon[^day]/','/Tue[^sday]/','/Wed[^nesday]/','/Thu[^rsday]/',
		'/Fri[^day]/','/Sat[^urday]/','/Sun[^day]/','/Monday/','/Tuesday/',
		'/Wednesday/','/Thursday/','/Friday/','/Saturday/','/Sunday/',
		'/Jan[^uary]/','/Feb[^ruary]/','/Mar[^ch]/','/Apr[^il]/','/May/',
		'/Jun[^e]/','/Jul[^y]/','/Aug[^ust]/','/Sep[^tember]/','/Oct[^ober]/',
		'/Nov[^ember]/','/Dec[^ember]/','/January/','/February/','/March/',
		'/April/','/June/','/July/','/August/','/September/','/October/',
		'/November/','/December/',
	);
	$replace = array ( 'Sen','Sel','Rab','Kam','Jum','Sab','Min',
		'Senin','Selasa','Rabu','Kamis','Jumat','Sabtu','Minggu',
		'Jan','Feb','Mar','Apr','Mei','Jun','Jul','Ags','Sep','Okt','Nov','Des',
		'Januari','Februari','Maret','April','Juni','Juli','Agustus','Sepember',
		'Oktober','November','Desember',
	);
	$date = date ($date_format, $timestamp);
	$date = preg_replace ($pattern, $replace, $date);
	$date = "{$date} {$suffix}";
	return $date;
} 

 

Cara pakai-nya:

Cukup panggil fungsi diatas seperti ini:

// semua parameter kosong maka waku yang di hasilkan adalah waktu saat ini
echo indonesian_date ();

Format tanggal default adalah: Senin, 19 Desember 2009 | 13:00 WIB Namun anda tetap dapat menggantinya sesuai keinginan, dengan menggunakan format date seperti layaknya di PHP. Perhatikan contoh berikut: Seperti halnya fungsi date() pada PHP, kita bisa menuliskannya sesuai format date di PHP, sebagai contoh:

// ambil waktu saat ini
$timestamp = time () 
echo indonesian_date ($timestamp, 'j M Y | H:i', 'WIT');

Baris kode diatas akan menghasilkan format tanggal: 3 Des 2009 | 12:23 WIT. Perhatikan ada akhiran WIT pada tanggal yang ditampilkan, anda juga dapat menggantinya sesuai keinginan

Anda dapat mencoba format-format lain sesuai dengan formatting date dari php (http://php.net/manual/en/function.date.php).

Anda juga dapat memasukkan format default DATETIME dari tabel MySQL (YYYY-MM-DD HH:MM:SS) ke dalam fungsi ini. Contoh:

$date = "2009-12-30 23:59:45"
echo indonesian_date ($date);

Output tanggal akan tetap menghasilkan tanggal berformat Indonesia. Jadi Marilah cintai PLODUK-PLODUK ENDONESIA :p

Jika ada kekurangan mohon di kritik dan mudah-mudahan berguna.

 

Comments

Anonymous's picture

Sedang dicoba bos. kayakna mantab

Anonymous's picture
Chris:

Sekedar saran untuk baris terakhir sebelum return:

----------
$date = "{$date} {$suffix}";
----------
direvisi menjadi
----------
$date = ($suffix)?"{$date} {$suffix}":"{$date}";
----------

Supaya dalam contoh pemakaian:
-------------
echo indonesian_date(strtotime($row['lastupdate']), 'l, j F Y','')
-------------
tidak ada spasi dibelakang tanggal.

abetobing's picture
abetobing:

Terimakasih banyak mas Chris sarannya.
Nanti saya update

thanks udah mampir

Anonymous's picture

Bagus & ok, langsung bisa!!

abetobing's picture
abetobing:

Terimakasih abu dzunnurain, semoga bermanfaat

Anonymous's picture

mantep gan. coba dulu ah...

abetobing's picture
abetobing:

monggo gan, semoga bermanfaat
ditunggu saran dan kritiknya

Anonymous's picture

Alternatif, fungsi yg sama, tetapi dengan format strftime() dan menggunakan native language dari OS untuk translate bahasa
tanpa menggunakan preg_replace, mungkin kurang lebih begini:
 
<?php
function indonesian_date($timestamp = 0, $format = "%A, %d %B %Y %H:%M")
{
    if(!$timestamp) $timestamp = time();
    setlocale(LC_TIME, (strtolower(substr(PHP_OS, 0, 3)) == "win") ? "Indonesian_indonesia.1252" : "id_ID.UTF-8");
    return strftime($format, $timestamp);
}
?>

abetobing's picture
abetobing:

wah wah... Guru php gw baru turun gunung. Kemana aja gan? jarang keliatan.
Nice function bos, simple gak makan resource kayak yang gw hehehehe
 

Post new comment

The content of this field is kept private and will not be shown publicly.
  • Web page addresses and e-mail addresses turn into links automatically.
  • Allowed HTML tags: <a> <em> <strong> <cite> <code> <ul> <ol> <li> <dl> <dt> <dd>
  • Lines and paragraphs break automatically.

More information about formatting options

CAPTCHA
Untuk mencegah spam ke website abetobing.com, silahkan masukkan kode yang tertera dibawah ini.
Image CAPTCHA
Enter the characters shown in the image.

openSUSE 11.3

openSUSE 11.3

Recent comments

Thanks for your visit :)