Tolong pilih kategori sesuai, jenis posting (diskusi atau bukan) dan sertakan tag/topik yang sesuai seperti komputer, java, php, mysql, dll. Promosi atau posting tidak pada tempatnya akan kami hapus!
- Bagi Anda yang ingin mendaftar, baca link berikut:
http://diskusiweb.com/discussion/50491/how-to-registrasi-diskusiweb-com-baca-ini-terlebih-dahulu
- Cara menyisipkan kode program supaya tampil rapi dan terformat dengan baik di diskusiweb.com: http://www.diskusiweb.com/discussion/50415/cara-menyisipkan-kode-program-di-diskusiweb-com
- Cara posting gambar/image di post Anda: http://www.diskusiweb.com/discussion/47345/cara-menyisipkan-menyertakan-image-pada-posting/p1

Script Kalender PHP

Dear all,

Ini saya posting koleksi script kalender PHP yang bisa menampilkan kalender bulanan lengkap dengan highlight pada tanggal aktif serta status minggu berjalan.

Juga ada kode Javascript yang menampilkan kalender bulanan abadi (!) Untuk semua tahun, mulai dari sebelum Masehi sampai kiamat :-)

Dilengkapi dengan informasi penanggalan jawa pada bagian window.title, sayangnya script ini hanya jalan pada browser IE.

Bagi yang punya waktu senggang, tolong dicek klaim diatas (khususnya untuk kalender Javascript) apakah tidak ada bug/kesalahan dalam menampilkan informasi hari, tanggal, bulan, dan tahunnya.

Semua script adalah freeware dan khusus Kalender PHP adalah open source, GNU Licensee.
Script2 tsb bisa dilihat dan didownload di http://supermatahari.phpnet.us/code2005.html

Bu Pun Su
Pendekar Sakti
Tagged:

Comments

  • <?php
    //format waktu: dd-mm-yyyy, misalnya: 31-12-2006
    function Tampilkan_Hari($waktu)
    {
    $jhari = 0;
    $array = explode("-", $waktu);
    $tgl = $array[0];
    $bln = $array[1];
    $thn = $array[2];

    $bulan = "Januari";
    switch($bln)
    {
    case 2: { $bulan = "Pebruari"; $jhari = 31; break; }
    case 3: { $bulan = "Maret"; $jhari = 59; break; }
    case 4: { $bulan = "April"; $jhari = 90; break; }
    case 5: { $bulan = "Mei"; $jhari = 120; break; }
    case 6: { $bulan = "Juni"; $jhari = 151; break; }
    case 7: { $bulan = "Juli"; $jhari = 181; break; }
    case 8: { $bulan = "Agustus"; $jhari = 212; break; }
    case 9: { $bulan = "September"; $jhari = 243; break; }
    case 10: { $bulan = "Oktober"; $jhari = 273; break; }
    case 11: { $bulan = "Nopember"; $jhari = 304; break; }
    case 12: { $bulan = "Desember"; $jhari = 334; }
    }

    $jml_kabisat = 1+($thn - ($thn % 4))/4;
    if($thn>100) $jml_kabisat -= ($thn - ($thn % 100))/100;
    if($thn>399) $jml_kabisat += ($thn - ($thn % 400))/400;
    if(($thn%4)<1 && $bln<3) $jml_kabisat--;

    $jmlhari = $thn*365+$jhari+$tgl+$jml_kabisat;

    $urutan_hari = $jmlhari % 7;

    switch($urutan_hari)
    {
    case 0: $hari = "Jumat"; break;
    case 1: $hari = "Sabtu"; break;
    case 2: $hari = "Minggu"; break;
    case 3: $hari = "Senin"; break;
    case 4: $hari = "Selasa"; break;
    case 5: $hari = "Rabu"; break;
    case 6: $hari = "Kamis";
    }

    $pasaran_jawa = $jmlhari % 5;
    switch($pasaran_jawa)
    {
    case 0: $hari_jawa = "Kliwon"; break;
    case 1: $hari_jawa = "Legi"; break;
    case 2: $hari_jawa = "Pahing"; break;
    case 3: $hari_jawa = "Pon"; break;
    case 4: $hari_jawa = "Wage";
    }

    $hasil = $hari." ".$hari_jawa.", ".$tgl." ".$bulan." ".$thn;

    //blokir jika terjadi error saat eksekusi
    if($array[2]>5879610) $hasil = false; //terjadi error saat dijalankan di laptop pentium IV 1,7MHz dengan RAM 256MB
    if($tgl>28)
    {
    if((($thn%4)>0 && $bln==2) || $tgl>30)
    {
    if($bln!=1 || $bln!=3 || $bln!=5 || $bln!=7 || $bln!=8 || $bln!=10 || $bln!=12)
    {
    $hasil = false;
    }
    }
    }
    return $hasil;
    }

    //eksekusi, misalnya: file.php?waktu=17-08-1945
    $waktu = addslashes(strip_tags($_GET['waktu']));
    echo Tampilkan_Hari($waktu);
    ?>
  • ntah, kayanya sih yg punya gw kepanjangan banget... :D

    http://www.tadulako.co.id/forum/viewtopic.php?t=1202

    asalnya dr javascript, gw konversi ke php, lagi pengen buat yg mirip2 fungsi date()

    @Pak Bupunsu, yg ini kayanya gak perlu...
    if($array[2]>5879610) $hasil = false;

    error muncul krn anda pake perhitungan model integer, ada batas max-nya : 2147483647
    coba ganti pake model perhitungan float :
    $jml_kabisat = 1+floor($thn/4);
    if($thn>100) $jml_kabisat -= floor($thn/100);
    if($thn>399) $jml_kabisat += floor($thn/400);
    if(($thn%4)<1 && $bln<3) $jml_kabisat--;

    $jmlhari = $thn*365+$jhari+$tgl+$jml_kabisat;

    $urutan_hari = $jmlhari-(floor($jmlhari/7)*7);
    $pasaran_jawa = $jmlhari-(floor($jmlhari/5)*5);
    kalo masih muncul error juga, ganti perhitungan '$thn%4' dgn model :
    $thn%4 => $thn-(floor($thn/4)*4)

    btw, kayanya masih ada salah kalkulasi di suatu tempat,
    saya nyoba input :
    '30-12-2006' => ada hasilnya
    '31-12-2006' => gak keluar harinya
    '1-1-2007' => ada hasilnya

    dr sini error-nya :
    if($tgl>28)
    {
    if((($thn%4)>0 && $bln==2) || $tgl>30)
    {
    if($bln!=1 || $bln!=3 || $bln!=5 || $bln!=7 || $bln!=8 || $bln!=10 || $bln!=12)
    {
    $hasil = false;
    }
    }
    }

    saya pikir spt ini lebih baik :
    if(($tgl>28 && ($thn%4)>0 && $bln==2) || ($tgl>30 && ($bln==4 || $bln==6 || $bln==9 || $bln==11)))
    $hasil = false;

    -edit-
    btw, utk fungsi yg sama bisa pake cara :
    function Tampilkan_Hari($waktu) {
    list($tgl, $bln, $thn) = explode('-', $waktu);
    $julian = GregorianToJD($bln, $tgl, $thn);

    if($julian>=1 && $julian<=536838867) {
    $bulan = Array('Januari','Februari','Maret','April','Mei','Juni',
    'Juli','Agustus','September','Oktober','November','Desember');
    $hari = Array('Minggu','Senin','Selasa','Rabu','Kamis','Jumat','Sabtu');
    $hari_jawa = Array('Legi','Pahing','Pon','Wage','Kliwon');

    $date = cal_from_jd($julian, CAL_GREGORIAN);
    return ($hari[$date[dow]].' '.$hari_jawa[$julian%5].', '.$tgl.' '.$bulan[$date[month]-1].' '.$thn);
    }
    else return false;
    }

    echo Tampilkan_Hari('17-8-1945'); //Jumat Legi, 17 Agustus 1945
    tapi ada batas minimal dan maksimal utk tanggal-nya (limit dr fungsi GregorianToJD()-nya php)
    minimal = 25 November 4714 BC
    maksimal = 18 Oktober 1465102 M
    rentang waktunya sudah cukup panjang...
  • <?php
    //format waktu: dd-mm-yyyy, misalnya: 31-12-2006
    function Tampilkan_Hari($waktu)
    {
    if(!$waktu) $waktu = date("d-m-Y");
    $jhari = 0;
    $array = explode("-", $waktu);
    $tgl = $array[0];
    $bln = $array[1];
    $thn = $array[2];

    $bulan = "Januari";
    switch($bln)
    {
    case 2: { $bulan = "Pebruari"; $jhari = 31; break; }
    case 3: { $bulan = "Maret"; $jhari = 59; break; }
    case 4: { $bulan = "April"; $jhari = 90; break; }
    case 5: { $bulan = "Mei"; $jhari = 120; break; }
    case 6: { $bulan = "Juni"; $jhari = 151; break; }
    case 7: { $bulan = "Juli"; $jhari = 181; break; }
    case 8: { $bulan = "Agustus"; $jhari = 212; break; }
    case 9: { $bulan = "September"; $jhari = 243; break; }
    case 10: { $bulan = "Oktober"; $jhari = 273; break; }
    case 11: { $bulan = "Nopember"; $jhari = 304; break; }
    case 12: { $bulan = "Desember"; $jhari = 334; }
    }

    $jml_kabisat = 1+floor($thn/4);
    if($thn>100) $jml_kabisat -= floor($thn/100);
    if($thn>399) $jml_kabisat += floor($thn/400);
    if(($thn-(floor($thn/4)*4))<1 && $bln<3) $jml_kabisat--;

    $jmlhari = $thn*365+$jhari+$tgl+$jml_kabisat;

    $urutan_hari = $jmlhari-(floor($jmlhari/7)*7);

    switch($urutan_hari)
    {
    case 0: $hari = "Jumat"; break;
    case 1: $hari = "Sabtu"; break;
    case 2: $hari = "Minggu"; break;
    case 3: $hari = "Senin"; break;
    case 4: $hari = "Selasa"; break;
    case 5: $hari = "Rabu"; break;
    case 6: $hari = "Kamis";
    }

    $pasaran_jawa = $jmlhari-(floor($jmlhari/5)*5);
    switch($pasaran_jawa)
    {
    case 0: $hari_jawa = "Kliwon"; break;
    case 1: $hari_jawa = "Legi"; break;
    case 2: $hari_jawa = "Pahing"; break;
    case 3: $hari_jawa = "Pon"; break;
    case 4: $hari_jawa = "Wage";
    }

    $hasil = $hari." ".$hari_jawa.", ".$tgl." ".$bulan." ".$thn;

    if($tgl>28)
    {
    if((($thn%4)>0 && $bln==2) || $tgl>30)
    {
    if($bln!=1 && $bln!=3 && $bln!=5 && $bln!=7 && $bln!=8 && $bln!=10 && $bln!=12) $hasil = false;
    }
    }
    return $hasil;
    }

    //eksekusi, misalnya: file.php?waktu=17-08-1945
    $waktu = addslashes(strip_tags($_GET['waktu']));
    echo Tampilkan_Hari($waktu);
    ?>
  • Class date {
    public $jan = "january";
    sampai .....
    public $dec = "desember";
    public function date() {
    }
    }


    terus pakai aturan yang diterapkan oleh Forum dengan Case

    maka manggilnya
    $waktu = new date();
    $waktu->setWaktu();
    $waktu->getWaktu();

    lebih sederhana dan dapat digunakan orang lain.
  • Originally posted by si_jun
    Class date {
    public $jan = "january";
    sampai .....
    public $dec = "desember";
    public function date() {
    }
    }


    terus pakai aturan yang diterapkan oleh Forum dengan Case

    maka manggilnya
    $waktu = new date();
    $waktu->setWaktu();
    $waktu->getWaktu();

    lebih sederhana dan dapat digunakan orang lain.
    maaf pak, saya gak ngeh ama tulisan anda,
    boleh tau isi class date? fungsi setWaktu()? getWaktu()?

    @ Pak Bupunsu, kok baru nongol lagi... ;)
  • Contoh penerapan script kalender ini bisa dilihat disitus milik saya: http://www.arsip.info
  • @bupunsu Tolong bantu master saya mau tanya, gimana caranya biar pas kita input '01-02-2015' / '01 desember 2015' bisa langsung terproses??
  • tret 2006 / 2007 ? serius ? :D

    bikin tret baru napa sik ?
Sign In or Register to comment.