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