Saturday, January 7, 2017

Bab 5. PHP/MySQL Untuk Pemula


Tanggal dan Waktu



Membaca waktu dan tanggal sekarang
Pada kasus ini, Anda akan menampilkan tanggal dan/atau waktu sekarang. Anda akan menggunakan fungsi PHP getdate().

<?php
// baca_tanggal_waktu.php
// membaca tanggal dan waktu sekarang
$skrg = getdate();

// menjadikan string
$waktuSkrg = $skrg["hours"] . ":" . $skrg["minutes"] .
":" . $skrg["seconds"];
$tanggalSkrg = $skrg["mday"] . "." . $skrg["mon"] . "." . $skrg["year"];

// hasil: "Sekarang jam 4:51:10 pada tanggal 19.7.2014" (contoh)
echo "Sekarang jam $waktuSkrg pada tanggal $tanggalSkrg";
?>


Memformat timestamp
Di sini, Anda akan mengubah timestamp UNIX menjadi sebuah string yang dapat dibaca oleh manusia. Anda akan menggunakan fungsi date() untuk mengubah tampilan timestamp menjadi pelbagai kode pemformatan.

<?php
// format_timestamp.php
// membaca tanggal
// hasil: "30 Oct 2014" (contoh)
echo date("d M Y", time()) . " \n";

// membaca waktu
// hasil: "12:38:26 PM" (contoh)
echo date("h:i:s A", time()) . " \n";

// membaca tanggal dan waktu
// hasil: "Monday, 30 October 2014, 12:38:26 PM" (contoh)
echo date ("l, d F Y, h:i:s A", time()) . " \n";

// membaca waktu dengan zona waktu
// hasil: "12:38:26 PM UTC"
echo date ("h:i:s A T", time()) . " \n";

// membaca tanggal dan waktu dalam format ISO8601
// hasil: "2006-10-30T12:38:26+00:00"
echo date ("c", time());
?>


Memeriksa validasi tanggal
Pada kasus ini, Anda akan memeriksa apakah tanggal tertentu valid atau tidak. Anda akan menggunakan fungsi checkdate().

<?php
// validasi_tanggal.php
// periksa tanggal 31-Apr-2014
// hasil: "Tanggal tak-valid"
echo checkdate(31,4,2014) ? "Tanggal valid" : "Tanggal tak-valid";
?>


Mengkonversi string menjadi timestamp
Di sini, Anda akan mengkonversi seuah string, yang memuat nilai tanggal atau waktu, menjadi timestamp UNIX. Anda akan menggunakan fungsi strtotime().

<?php
// string_ke_timestamp.php
// mendefinisikan string
$str = "20140607";

// mengkonversi string ke timestamp
$ts = strtotime($str);

// memformat menjadi tanggal/waktu yang mudah dibaca
// hasil: "Saturday, 07 June 2014 12:00:00 AM" (contoh)
echo ($ts === -1) ? "String tak-valid" : date("l, d F Y h:i:s A", $ts);
?>

Fungsi strtotime() juga dapat menerima deskriptor waktu berbahasa Inggris seperti “now”, “next Wednesday”,  atau “last Friday”, dan Anda dapat menggunakannya untuk aritmatika tanggal. Contoh berikut mengilustrasikannya.

<?php
// string_ke_timestamp2.php
// asumsi sekarang "Saturday, 21 July 2014 11:08:34 PM"
// mendefinisikan string
$str = "next Friday";

// mengkonversi string menjadi timestamp
$ts = strtotime($str);

// memformat menjadi tanggal/waktu yang mudah dibaca
// hasil: "Friday, 25 July 2014 12:00:00 AM"
echo ($ts === false) ? "String tak-valid" : date("l, d F Y h:i:s A", $ts);

// mendefinisikan string
$str = "2 weeks 6 hours ago";

// mengkonversi string menjadi timestamp
$ts = strtotime($str);

// memformat menjadi tanggal/waktu yang mudah dibaca
// hasil: "Friday, 04 July 2014 11:07:52 PM"
echo ($ts === false) ? "String tak-valid" : date("l, d F Y h:i:s A", $ts);
?>


Memeriksa tahun leap
Di sini, Anda akan memeriksa apakah tahun tertentu adalah tahun leap. Anda akan menuliskan sebuah fungsi untuk menguji apakah tahun tertentu dapat dibagi (tanpa sisa) oleh 4 atau 400.

<?php
// uji_tahun_leap.php
// fungsi untuk menguji apakah tahun leap atau tidak
function ujiTahunLeap($tahun) {
$hasil = (($tahun%400 == 0) || ($tahun%4 == 0 && $tahun%100 != 0)) ? true : false;
return $hasil;
}

// hasil: "Adalah tahun leap"
echo ujiTahunLeap(2004) ? "Adalah tahun leap" : "Bukan tahun leap";

// hasil: "Bukan tahun leap"
echo ujiTahunLeap(2001) ? "Adalah tahun leap" : "Bukan tahun leap";
?>

Cara lain dalam melakukannya adalah dengan menggunakan fungsi checkdate() untuk menguji apakah ada hari ekstra pada bulan Februari dari tahun tertentu. Contoh berikut mengilustrasikan hal ini.

<?php
// uji_tahun_leap2.php
// fungsi untuk menguji apakah tahun leap atau tidak
function ujiTahunLeap($tahun) {
    return checkdate(2, 29, $tahun);
}

// hasil: "Adalah tahun leap"
echo ujiTahunLeap(2004) ? "Adalah tahun leap" : "Bukan tahun leap";

// hasil: "Bukan tahun leap"
echo ujiTahunLeap(2001) ? "Adalah tahun leap" : "Bukan tahun leap";
?>


Mencari jumlah hari dalam bulan tertentu
Pada kasus ini, Anda akan mencari jumlah hari dalam bulan tertentu. Anda akan menggunakan fungsi date() dengan pemodifikasi “t”.

<?php
// jumlah_hari.php
// mendapatkan timestamp untuk bulan dan tahun maret 2014
$ts = time(0,0,0,3,1,2014);

// menghitung jumlah hari
// hasil: 31
echo date("t", $ts);
?>


Mencari nomor hari atau minggu pada tahun tertentu
Anda akan mencari nomor hari atau minggu pada tanggal tertentu. Anda akan menggunakan fungsi PHP date() dengan pemodifikasi “z” atau “W”.

<?php
// hari_nomor_minggu.php
// mendapatkan nomor hari untuk 01-Mar-2008
// hasil: 61
echo date("z", mktime(0,0,0,3,1,2008))+1;

// mendapatkan nomor minggu untuk 01-Mar-2014
// hasil: 09
echo date("W", mktime(0,0,0,3,1,2008));
?>


Menghitung jumlah hari atau minggu
Di sini, Anda akan menghitung jumlah hari atau minggu pada tahun tertentu. Anda menggunakan fungsi PHP date() dengan pemodifikasi “z” atau “W”.

<?php
// jumlah_hari_minggu.php
// mendapatkan jumlah hari pada tahun 2015
$jumHari = date("z", mktime(0,0,0,12,31,2015))+1;

// mendapatkan jumlah minggu pada tahun2015
$jumMinggu = date("W", mktime(0,0,0,12,28,2015));

// hasil: "Terdapat 365 hari dan 53 minggu pada tahun 2015."
echo "Terdapat $jumHari hari dan $jumMinggu minggu pada tahun 2015.\n";
?>


Menemukan nama hari pada tanggal tertentu
Di sini, Anda akan menemukan nama hari pada tanggal tertentu. Anda akan menggunakan fungsi PHP date() dengan pemodifikasi “l”.

<?php
// nama_hari.php
// membaca timestamp untuk tanggal 04-Jun-2015
$ts = mktime(0,0,0,6,4,2015);

// mendapatkan nama hari
// hasil: "Thursday"
echo date("l", $ts);
?>


Menghitung kuarter tahun
Pada kasus ini, Anda akan menghitung kuarter tahun berapa tahun tertentu dikategorikan. Anda akan menggunakan fungsi PHP date() dengan pemodifikasi “m”.

<?php
// kuarter_tahun.php
// mendapatkan timestamp untuk tanggal 04-Jun-2015
$ts = mktime(0,0,0,6,4,2015);

// membaca kuarter
// hasil: 2
echo ceil(date("m", $ts)/3);
?>


Mengkonversi waktu lokal menjadi GMT
Di sini, Anda akan mengkonversi waktu lokal menjadi GMT (Greenwich Mean Time). Anda akan menggunakan fungsi PHP gmdate().

<?php
// waktu_lokal_gmt.php
// konversi waktu lokal menjadi GMT
// hasil: "03:48:10 19-Jul-14 GMT" (contoh)
echo gmdate("H:i:s d-M-y T") . "\n";

// konversi waktu lokal tertentu menjadi GMT
// result: "00:00:00 01-Jan-70 GMT" (contoh)
$ts = mktime(4,30,0,2,2,205);
echo gmdate("H:i:s d-M-y T", $ts);
?>


Mengkonversi pelbagai zona waktu
Di sini, Anda akan membaca waktu lokal pada zona waktu lain, jika diberikan offset GMT. Anda akan menuliskan fungsi PHP untuk menghitung waktu pada zona tertentu.

<?php
// konversi_zona_waktu.php
// fungsi untuk membaca waktu
// untuk zona waktu lain
// jika diberikan timestamp tertentu
// dan offset jam dari GMT

function bacaWaktuLokal($ts, $offset) {
  // melakukan konversi
  // menghasilkan UNIX timestamp
  return ($ts - date("Z", $ts)) + (3600 * $offset);
}

// mendapatkan waktu lokal Singapore
// hasil: "11:54:18 19-07-14 SST SST"
echo date("H:i:s d-m-y", bacaWaktuLokal(time(), 8)) . " SST \n";

// mendapatkan waktu lokal India
// hasil: "09:24:39 19-07-14 IST "
echo date("H:i:s d-m-y", bacaWaktuLokal(time(), +5.5)) . " IST \n";

// mendapatkan waktu lokal USA (Bagian timur)
// hasil: "22:54:53 18-07-14 EST "
echo date("H:i:s d-m-y", bacaWaktuLokal(time(), -5)) . " EST \n";

// mendapatkan waktu lokal USA (Pasifik)
// hasil: "19:55:11 18-07-14 PST"
echo date("H:i:s d-m-y", bacaWaktuLokal(time(), -8)) . " PST \n";

// mendapatkan waktu GMT
// ketika jam 04:30 AM di India
// hasil: "03:30:00 02-02-15 GMT "
echo date("H:i:s d-m-y", bacaWaktuLokal(mktime(4,30,0,2,2,2015), 0)) . " GMT \n";
?>


Membandingkan tanggal
Di sini, Anda akan membandingkan dua tanggal untuk menguji manakah tanggal yang lebih dahulu terjadi. Anda akan menggunakan operator-operator perbandingan untuk membandingkan timestamp yang terkait dengan dua tanggal tertentu.

<?php
// banding_tanggal.php
// menciptakan timestamp untuk dua tanggal
$tanggal1 = mktime(0,0,0,2,1,2015);
$tanggal2 = mktime(1,0,0,2,1,2015);

// membandingkan timestamp
// untuk melihat mana tanggal yang lebih dulu
if ($tanggal1 > $tanggal2) {
    $str = date ("d-M-Y H:i:s", $tanggal2) . " terjadi sebelum " .
      date ("d-M-Y H:i:s", $tanggal1);
} else if ($tanggal2 > $tanggal1) {
    $str = date ("d-M-Y H:i:s", $tanggal1) . " terjadi sebelum " .
      date ("d-M-Y H:i:s", $tanggal2);
} else {
    $str = "Kedua tanggal sama";
}

// hasil: "01-Feb-2015 00:00:00 terjadi sebelum
// 01-Feb-terjadi sebelum 01:00:00"
echo $str;
?>


Melakukan aritmatika tanggal
Di sini, Anda akan menjumlahkan (mengurangi) interval waktu ke (dari) suatu tanggal. Anda akan mengkonversi suatu tanggal menjadi timestamp UNIX agar mengekspresikan interval waktu dalam detik, dan kemudian menjumlahkan (mengurangi) interval ke (dari) timestamp tersebut.

<?php
// aritmatika_tanggal.php
// menetapkan tanggal basis
$strTanggal = "2014-09-01 00:00:00";

// konversi tanggal basis menjadi UNIX timestamp
// diekspresikan dalam detik
$timestamp = strtotime($strTanggal);

// mengekspresikan "28 hari, 5 jam, 25 menit
// dan 11 detik" dalam detik
$intDetik = 11 + (25*60) + (5*60*60) + (28*24*60*60);

// menambahkan interval (dalam detik)
// pada timestamp (dalam detik)
// memformat hasil
// hasil "2014-09-29 05:25:11"
$strTanggalBaru = date("Y-m-d h:i:s", $timestamp + $intDetik);
echo $strTanggalBaru;
?>


Projek berkaitan dengan tanggal dan waktu
Di sini, Anda akan menghitung usia seseorang.

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
  <head>
    <title>Projek: Hitung Usia</title>
  </head>
  <body>
    <h2>Projek: Hitung Usia</h2>
<?php
  // jika form belum disubmit
  // menampilkan form
  if (!isset($_POST['submit'])) {
?>
    <form method="post" action="hitung_usia.php">
      Masukkan tanggal lahir Anda, dalam format mm/dd/yyyy: <br />
      <input type="text" name="dob" />
      <p>
      <input type="submit" name="submit" value="Submit" />
    </form>
<?php
  // jika form disubmit
  // memproses masukan form
  } else {
    // memecah tanggal menjadi komponen-komponen
    $arrTanggal = explode('/', $_POST['dob']);

    // menghitung timestamp yang terkait dengan nilai tanggal
    $tanggalTs = strtotime($_POST['dob']);

    // menghitung timestamp yang terkait dengan 'today'
    $skrg = strtotime('today');

    // memeriksa apakah nilai yang dimasukkan dalam format yang tepat
    if (sizeof($arrTanggal) != 3) {
        die('ERROR: Silahkan masukkan tanggal lahir yang tepat');
    }

    // memeriksa apakah nilai yang dimasukkan adalah tanggal yang valid
    if (!checkdate($arrTanggal[0], $arrTanggal[1], $arrTanggal[2])) {
        die('ERROR: Silahkan tanggal lahir yang valid');
    }

    // memeriksa apakah tanggal yang dimasukkan lebih awal dari 'today'
    if ($tanggalTs >= $skrg) {
        die('ERROR: Silahkan masukkan tanggal lahir yang lebih awal dari today');
    }

    // menghitung selisih antara tanggal lahi dan today dalam hari
    // konversi ke tahun
    // konversi hari sisa ke bulan
    // menampilkan keluaran
    $usiaHari = floor(($skrg - $tanggalTs) / 86400);
    $usiaTahun = floor($usiaHari / 365);
    $usiaBulan = floor(($usiaHari - ($usiaTahun * 365)) / 30);
    echo "Anda berusia sekitar $usiaTahun tahun dan $usiaBulan bulan.";
}
?>
  </body>
</html>












No comments:

Post a Comment