PHP Validasi Tanggal

Pada artikel sebelumnya telah kita bahas cara merubah/konversi tanggal menjadi nama hari.
Tapi tanpa adanya validasi maka akan terkesan aneh jika tanggal 50 dianggap ada :)
Langsung saja ke fungsi PHP nya.
Yang kita pakai untuk validasi tanggal dengan adalah fungsi checkdate()
Penggunaannya checkdate('bulan/tanggal/tahun) atau silakan baca referensinya di manual fungsi checkdate.

Dari contoh form pada artikel Konversi tanggal menjadi hari menggunakan PHP kalau kita validasi maka perlu kita tambahkan code berikut setelah if(isset($_GET['ubah'])) {

$cek = checkdate($_POST['m'], $_POST['d'], $_POST['y']);
if($cek != 1) { echo 'Tanggal tidak valid'; }

atau script lengkapnya menjadi seperti ini

<?php
echo '<form method="get" action="">
tanggal:<input type="text" name="tanggal" value="">
<select name="bulan">
<option value="1">Januari</option>
<option value="2">Pebruari</option>
<option value="3">Maret</option>
<option value="4">April</option>
<option value="5">Mei</option>
<option value="6">Juni</option>
<option value="7">Juli</option>
<option value="8">Agustus</option>
<option value="9">September</option>
<option value="10">Oktober</option>
<option value="11">November</option>
<option value="12">Desember</option>
</select>
tahun:<input type="text" name="tahun" value="">
<input type="submit" name="ubah" value="Cari Hari">
</form><br/>';
if(isset($_GET['ubah'])) {
$cek = checkdate($_POST['m'], $_POST['d'], $_POST['y']);
if($cek != 1) {
echo 'Tanggal tidak valid!';
}
else {
$tgl = $_GET['bulan'].'/'.$_GET['tanggal'].'/'.$_GET['tahun'];
$unix = strtotime($tgl);
$hari = date("D", $unix);
$hari = str_replace('Sun', 'Minggu', $hari);
$hari = str_replace('Mon', 'Senin', $hari);
$hari = str_replace('Tue', 'Selasa', $hari);
$hari = str_replace('Wed', 'Rabu', $hari);
$hari = str_replace('Thu', 'Kamis', $hari);
$hari = str_replace('Fri', 'Jum\'at', $hari);
$hari = str_replace('Sat', 'Sabtu', $hari);
echo 'tanggal '.$_GET['tanggal'].'-'.$_GET['bulan'].'-'.$_GET['tahun'].' adalah hari '.$hari;
}
}
?>


hasil dari checkdate() ini adalah 1 atau TRUE jika benar dan 0 atau FALSE jika salah (tidak valid).

semoga bermanfaat

Konversi tanggal menjadi hari menggunakan PHP

Script ini digunakan untuk mengetahui hari dari tanggal yang diinput, atau bisa dibilang konversi tanggal ke hari. Fungsi-fungsi PHP yang digunakan dalam script ini yaitu:
  • strtotime()
    gunanya untuk memparsing tanggal menjadi unix timestamp.
  • date()
    untuk mendapatkan local time/date (tanggal dan jam server)
Penggunaan fungsi strtotime() adalah sebagai berikut: strtotime('bulan/tanggal/tahun') lebih detailnya bisa baca di manual fungsi strtotime dan untuk fungsi date bisa baca di manual fungsi date script lengkapnya seperti ini:
<?php
echo '<form method="get" action="">
tanggal:<input type="text" name="tanggal" value="">
<select name="bulan">
 <option value="1">Januari</option>
 <option value="2">Pebruari</option>
 <option value="3">Maret</option>
 <option value="4">April</option>
 <option value="5">Mei</option>
 <option value="6">Juni</option>
 <option value="7">Juli</option>
 <option value="8">Agustus</option>
 <option value="9">September</option>
 <option value="10">Oktober</option>
 <option value="11">November</option>
 <option value="12">Desember</option>
</select>
tahun:<input type="text" name="tahun" value="">
<input type="submit" name="ubah" value="Cari Hari">
</form><br/>';
if(isset($_GET['ubah'])) {
 $tgl = $_GET['bulan'].'/'.$_GET['tanggal'].'/'.$_GET['tahun'];
 $unix = strtotime($tgl);
 $hari = date("D", $unix); // hasilnya 3 huruf nama hari bahasa inggris
 # supaya harinya menjadi bahasa indonesia maka harus kita gant/replace
 $hari = str_replace('Sun', 'Minggu', $hari);
 $hari = str_replace('Mon', 'Senin', $hari);
 $hari = str_replace('Tue', 'Selasa', $hari);
 $hari = str_replace('Wed', 'Rabu', $hari);
 $hari = str_replace('Thu', 'Kamis', $hari);
 $hari = str_replace('Fri', 'Jum\'at', $hari);
 $hari = str_replace('Sat', 'Sabtu', $hari);
 echo 'tanggal '.$_GET['tanggal'].'-'.$_GET['bulan'].'-'.$_GET['tahun'].' adalah hari '.$hari;
}
?>
Tapi fungsi date ini tidak memiliki validator sendiri, jika tanggal yang diinput lebih besar dari 31 atau tidak ada dalam kalender maka tanggal tersebut akan tetap di proses dan dianggap bulan berikutnya. misal kita masukkan tanggal 31 April 2012, maka script akan membacanya sebagai tanggal 1 Mei 2012. Untuk memvalidasi input tanggal agar sesuai dengan kalender akan saya sampaikan lain waktu.