Senin, 10 November 2014

Mengatur Format Tanggal Dalam PHP


PHP telah menyediakan fungsi untuk menampilkan tanggal dalam berbagai format yang dituliskan dalam bahasa inggris. Bagaimana jika kita perlu menampilkan tanggal dalam format indonesia? Artikel berikut akan menjelaskan beberapa format tanggal dalam php dan cara menampilkannya. Silahkan anda simak.
Secara umum tanggal dalam php dapat dipanggil dengan menuliskan perintah berikut :
date(format,timestamp).
Referensi format tanggal bisa dilihat berikut :

Format harus diisikan dengan format tanggal yang anda perlukan

  • d - tanggal dalam satu bulan (dari 01 to 31)
  • D - nama hari dalam bahasa inggris tiga huruf (Mon, Tue dll)
  • j - tanggal tanpa angka 0
  • l - nama hari dalam bahasa inggris lengkap (Monday dll)
  • w - hari dalam angka 0 s/d 6
  • z - nilai hari dalam 1 tahun dari 0 sampai 365
  • F - Nama bulan dalam bahasa inggris (January s/d December)
  • m - nilai bulan dari 01 s/d 12
  • M - nama bulan dalam bahasa inggris tiga huruf (Jan, Feb dll)
  • n - nilai bulan tanpa awalan 0
  • t - jumlah hari dalam satu bulan
  • Y - empat digit tahun
  • y - dua digit tahun
  • a - simbol am dan pm huruf kecil
  • A - simbol am dan pm huruf besar
  • g - format 12 jam tanpa awalan 0
  • G - format 23 jam tanpa awalan 0
  • h - format 12 jam dengan awalan 0
  • H - format 23 jam dengan awalan 0
  • i - format menit dengan awalan 0
  • s - format detik dengan awalan 0
  • e - menampilkan zona waktu (contoh: Asia/Kuala_Lumpur)

Ada beberapa lagi, silahkan baca : www.php.net
Semua komponen tanggal dapat dipadukan sesuai keperluan stamptimes opsional. Secara default akan menampilkan tanggal secara normal.
Contoh sederhana menampilkan tanggal dalam beberapa format :

<?php
echo date("Y/m/d") . "<br />"; //ini akan menampilkan dengan format 2012/01/01
echo date("l, d-m-Y") . "<br />"; //ini akan menampilkan dengan format Tuesday, 21-08-2012
echo date("d F Y") . "<br />"; //ini akan menampilkan dengan format 21 January 2012
echo date("h:i:s") . "<br />"; //ini akan menampilkan dengan format 08:01:04
echo date("l, d-m-Y h:i:s") . "<br />"; //ini akan menampilkan dengan format Tuesday, 21-08-2012 08:17:35
?>

PHP hanya menyediakan format tanggal dalam bahasa inggris. Bagaimana jika format tanggal ingin ditampilkan dalam bahasa indonesia misal : Senin, 15 Pebruari 2012

Untuk melakukan hal diatas kita perlu sedikit memodifikasi cara menampilkan tanggal yaitu dengan langkah :

Membuat array nama hari :
$namahari = array("Minggu","Senin","Selasa","Rabu","Kamis","Jum'at","Sabtu");

Membuat array nama bulan :
$namabulan = array("","Januari","Pebruari","Maret","April","Mei","Juni","Juli","Agustus","September","Oktober","November","Desember");

Kemudian baru kita memanggil array $namahari dan array $namabulan dengan kode berikut :
echo $namahari[date("w")].", ".date("j")." ".$namabulan[date("n")]." ".date("Y");

Kode lengkapnya sebagai berikut :

<?php
  $namahari = array("Minggu","Senin","Selasa","Rabu","Kamis","Jum'at","Sabtu");
  $namabulan = array("","Januari","Pebruari","Maret","April","Mei","Juni","Juli","Agustus","September","Oktober","November","Desember");
  echo $namahari[date("w")].", ".date("j")." ".$namabulan[date("n")]." ".date("Y");
?>

Untuk pengaturan lainnya dapat didownload pada link dibawah ini (file pdf) :
Dosen Pengampuh                : M.Ropianto
NIDN                                           : 102867804
Status                                         : Dosen Tetap YAPISTA / STT Ibnu Sina
Pengampuh Matakuliah    : Algoritma dan Pemrograman 2



Rabu, 05 November 2014

Menyesuaikan Zona Waktu di MySQL dan PHP


Ketika membuat sebuah aplikasi website, seringkali waktu yang ditunjukkan oleh server tidak sama dengan waktu client. Ini terjadi karena server terletak di zona waktu yang berbeda dengan client. Misalnya server yang berlokasi di USA, jelas berada di zona waktu yang berbeda dengan client di Indonesia.


echo date('d-m-Y H:i:s');

Kode PHP di atas akan menampilkan waktu aktual pada server. Jika dicoba di localhost tentu saja waktunya akan sama seperti komputer lokal, namun hasilnya bisa berbeda jika dicoba pada server web Anda. Agar hasilnya sesuai dengan waktu di komputer kita, tambahkan pengaturan zona waktu.



date_default_timezone_set('Asia/Jakarta');
echo date('d-m-Y H:i:s');

Untuk zona waktu yang lain bisa menyesuaikan.
Namun cara di atas memiliki beberapa kelemahan, terutama pada aplikasi yang menggunakan database. Selain kemungkinan terkena bug Y2K38, MySQL dan PHP memiliki pengaturan zona waktu yang terpisah. Misal kita menjalankan fungsi NOW() pada MySQL, waktu yang ditampilkan tidak sesuai dengan zona waktu kita. Selain itu, aplikasi juga membutuhkan tambahan proses setiap kali mengolah data dari field waktu pada MySQL agar sesuai dengan zona waktu kita.
Agar proses penyesuaian waktu bisa berjalan secara otomatis, kita harus mengetahui berapa selisih waktu client dengan UTC, kemudian beritahukan kepada MySQL. Pertama-tama dengan bantuan class Datetime, kita dapatkan offset (untuk menutupi selisih yang ada) dalam detik, kemudian mudah saja kita konversikan ke dalam menit dan jam.



$sekarang = new DateTime();
$menit = $sekarang -> getOffset() / 60;

Kemudian cari tau apakah offset bernilai positif atau negatif, lalu konversikan saja ke bilangan positif untuk memudahkan penghitungan.





$tanda = ($menit < 0 ? -1 : 1);
$menit = abs($menit);
$jam = floor($menit / 60);
$menit -= $jam * 60;

Gunakan fungsi sprintf untuk memformat string agar bisa diterima MySQL (format yang bisa diterima misalnya: +07:00).


$offset = sprintf('%+d:%02d', $tanda * $jam, $menit);

Terakhir jalankan query SET time_zone setelah mengkoneksikan aplikasi dengan database. Silakan ganti dengan koneksi database yang Anda gunakan.





mysql_connect($server, $username, $password);
mysql_select_db($database);
mysql_query("SET time_zone = '$offset'");

Akhirnya pengaturan zona waktu antara PHP dan MySQL telah sesuai.