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.