Menentukan Nama Hari Pasaran Jawa Dari Tanggal Tertentu dengan PHP


Wah… mentang-mentang orang Jawa nih ye… artikel yang ditulis berbau ke-Jawa-an. He.. 3x bukan gitu sih, soalnya beberapa waktu yang lalu ada eks mahasiswa saya yang komen di blog ini dan menanyakan gimana caranya mengetahui nama hari pasaran Jawa dari suatu tanggal tertentu dengan script PHP. Aneh.. dan sangat menggelitik juga pertanyaannya, namun sekaligus menantang. BTW… mungkin dia mau bikin script ramalan jawa berdasarkan wetonnya kali ya :-) semoga tidak lah….
Bagi yang belum tahu nama hari dalam pasaran Jawa, bahwa di Jawa, khususnya Jawa Tengah terdapat 5 nama hari khusus secara berurutan yaitu pahing, pon, wage, kliwon, legi. Jika Anda main ke Jawa Tengah, maka mungkin Anda akan menjumpai kalender yang di bawah tanggalnya terdapat nama-nama hari pasaran itu. Nah… sekarang bagaimana caranya menentukan nama hari pasaran jawa dari suatu tanggal tersebut menggunakan PHP?
OK.. ide untuk menentukan nama hari pasaran Jawa tersebut adalah dengan menggunakan konsep Modulo. Lantas implementasinya bagaimana? Nah.. langkah pertama adalah kita ambil sebarang tanggal dahulu sebagai acuan, misalkan tanggal X. Tanggal X ini kita lihat di kalender dan bertepatan dengan nama hari pasaran apa. Misalkan X ini hari pasaran Jawanya adalah ‘kliwon’, nah… selanjutnya kita buat array berisi kelima nama hari pasaran tersebut secara berurutan dengan elemen pertamanya adalah ‘kliwon’.
$hari = array('kliwon', 'legi', 'pahing', 'pon', 'wage');
Jika Anda tidak hapal urutan nama hari pasaran, bisa Anda lihat di kalender.
Selanjutnya, misalkan kita ingin mengetahui apa nama hari pasaran untuk tanggal Y? Caranya adalah dengan mencari selisih hari antara X dan Y ini. Selanjutnya selisih hari ini kita modulo dengan 5. Jika hasil modulonya sama dengan 0, maka nama pasaran tanggal Y ini adalah Kliwon (elemen array ke-0 dari $hari). Jika hasil modulo 1, hari pasarannya Legi (elemen array ke-1 dari $hari), demikian seterusnya sampai dengan jika hasil modulonya adalah 4 yaitu nama hari pasarannya Wage (elemen array ke-4 dari $hari).
Mungkin di benak Anda muncul pertanyaan, mengapa kita gunakan modulo 5? ya… karena hari pasaran itu selalu berulang setiap 5 hari terhitung dari tanggal X yang sudah kita tentukan. Saya ambil contoh, misalkan tanggal X nama hari pasarannya Kliwon. Sekarang kita ingin menentukan nama hari pasaran Y, dimana Y ini adalah 10 hari setelah X. Karena X adalah Kliwon, maka Y ini juga Kliwon karena selisih hari antara X dan Y ini merupakan kelipatan 5. Selanjutnya bagaimana jika Y ini adalah 11 hari setelah X? Ya… berarti Y ini adalah Legi, karena 11 = 10 + 1, dimana hari ke-10 itu adalah Kliwon, sehingga hari berikutnya adalah Legi. Trus… misalkan jika Y ini adalah 999 hari setelah X. Kira-kira nama hari pasaran Y ini apa ya? OK… kita tahu bahwa 999 = 995 + 4. Kita juga tahu bahwa 995 ini bilangan kelipatan 5, maka dipastikan pada tanggal yang bertepatan 995 hari setelah X itu nama hari pasarannya adalah Kliwon, dan… pada tanggal Y nya adalah Wage (4 hari setelah Kliwon). Masuk akal bukan? :-)
Nah… sekarang, bagaimana implementasi di script PHP nya? mungkin yang menjadi masalah sekarang adalah cara mencari selisih antara kedua hari itu. He.. 3x jangan khawatir karena saya telah menulis artikel cara mencari selisih hari antara dua tanggal dengan PHP.
So… there would be no problems anymore… Ini dia script untuk menentukan nama hari pasaran jawa dari suatu tanggal tertentu.
pasaran.php

<?php

// dipilih tanggal 1 Maret 2010 sebagai acuan
// hari pasaran tanggal 1 Maret 2010 adalah 'Pon'
$tgl1 = "2010-03-01";  

// ingin mengetahui apa nama hari pasaran untuk tanggal 2 April 2010
$tgl2 = "2010-04-02"; 

// array urutan nama hari pasaran dimulai dari 'Pon'
$pasaran = array('pon', 'wage', 'kliwon', 'legi', 'pahing');

// proses mencari selisih hari antara kedua tanggal
$pecah1 = explode("-", $tgl1);
$date1 = $pecah1[2];
$month1 = $pecah1[1];
$year1 = $pecah1[0];

$pecah2 = explode("-", $tgl2);
$date2 = $pecah2[2];
$month2 = $pecah2[1];
$year2 =  $pecah2[0];

$jd1 = GregorianToJD($month1, $date1, $year1);
$jd2 = GregorianToJD($month2, $date2, $year2);

$selisih = $jd2 - $jd1;

// hitung modulo 5 dari selisih harinya
$mod = $selisih % 5;

// menampilkan nama hari pasaran, yaitu elemen ke-$mod dari array $pasaran
echo "Nama hari pasaran dari tanggal ".$tgl2." adalah ".$pasaran[$mod];
?>
Jika Anda jalankan script di atas, maka akan diperoleh nama hari pasaran tanggal 2010-04-02 adalah Kliwon. Untuk mengeceknya, silakan dilihat di kalender ya :-)
Oya.. ide dan script di atas hanya bisa diterapkan jika tanggal acuan < tanggal yang akan dicari nama hari pasarannya. Sedangkan jika kondisinya tanggal acuan > tanggal yang akan dicari nama hari pasarannya, maka ada sedikit perubahan di algoritmanya. Sedangkan urutan list arraynya sama saja.
Nah… silakan anda bereksperimen sendiri untuk mencari algoritma ketika tanggal acuan > tanggal yang akan dicari nama hari pasarannya. Bagi Anda yang sudah dapat algoritmanya, kasih tahu yang lain dengan cara mengirim komentar di bawah ini ya… Jika jawaban Anda benar, sebagai hadiahnya nanti blog Anda tak taruh di blogroll di blog ini. Lumayan kan dapat backlink :-)
Selamat mencoba !!

sumber dari : blog.rosihanari.net

0 komentar:

Poskan Komentar

 
Design by Free WordPress Themes | Bloggerized by Lasantha - Premium Blogger Themes | Online Project management