Dec 5, 2010
Tutorial PHP | Mengitung Tanggal, Umur dan Selisih Waktu
Tutorial kali ini akan membahas tentang perhitungan tanggal, misalnya untuk menambahkan tanggal, bulan bahkan tahun. Kemudian untuk perhitungan umur dan selisih waktu dengan menginputkan 2 tanggal berbeda kemudian akan menghasilkan jumlah rentang waktu tertentu.. langsung saja bagai mana caranya, mari kita simak dibawah ini..
Untuk Menjumlahkan tanggal
- misalnya sekarang tanggal 2010-12-05 dan akan menambahkan tanggal itu dengan 2 hari setelahnya maka outputnya adalah 2010-12-07.
<?php
$tgl = "2010-12-05";
$newdate = strtotime('+2 day',strtotime($tgl));
$newdate = date('Y-m-d', $newdate);
echo $newdate;
?>
atau
<?php
echo date("d-m-Y", mktime(0, 0, 0, 12, 5+2, 2010));
?>
Untuk Pengurangan tanggal
- misalnya sekarang tanggal 2010-12-05 dan akan dikurangi tanggal itu dengan 6 hari sebelumnya maka outputnya adalah 2010-11-30.
<?php
$tgl = "2010-12-05";
$newdate = strtotime('-6 day',strtotime($tgl));
$newdate = date('Y-m-d', $newdate);
echo $newdate;
?>
atau
<?php
echo date("d-m-Y", mktime(0, 0, 0, 12, 05-6, 2010));
?>
Untuk Menghitung Umur
- misalnya sekarang tanggal 2010-12-05 dan anda akan memasukkan tanggal lahir anda ex:1989-08-23 outputnya adalah umur anda 21 tahun, 3 bulan, 14 hari, 6 jam, 12 menit, 13 detik .
<?php
function datediff($tgl1, $tgl2){
$tgl1 = (is_string($tgl1) ? strtotime($tgl1) : $tgl1);
$tgl2 = (is_string($tgl2) ? strtotime($tgl2) : $tgl2);
$diff_secs = abs($tgl1 - $tgl2);
$base_year = min(date("Y", $tgl1), date("Y", $tgl2));
$diff = mktime(0, 0, $diff_secs, 1, 1, $base_year);
return array( "years" => date("Y", $diff) - $base_year,
"months_total" => (date("Y", $diff) - $base_year) * 12 + date("n", $diff) - 1,
"months" => date("n", $diff) - 1,
"days_total" => floor($diff_secs / (3600 * 24)),
"days" => date("j", $diff) - 1,
"hours_total" => floor($diff_secs / 3600),
"hours" => date("G", $diff),
"minutes_total" => floor($diff_secs / 60),
"minutes" => (int) date("i", $diff),
"seconds_total" => $diff_secs,
"seconds" => (int) date("s", $diff) );
}
echo '<form name="form1" method="post" action="">;
echo '<input type="text" name="tgl" id="tgl"><input type="submit" name="hitung" id="hitung" value="Hitung"></form>';
$a = datediff($_POST['tgl'], date("Y/m/d/ h:m:s"));
if ($_POST['tgl'])
{ echo 'umur anda '.$a[years].'
tahun, '.$a[months].'
bulan, '.$a[days].'
hari, '.$a[hours].'
jam, '.$a[minutes].'
menit, '.$a[seconds].'
detik';
}
?>
Menghitung Jumlah Hari Minggu Antara Dua Tanggal
Script ini akan menghitung jumlah hari Minggu antara tanggal 05-10-2010 s/d 05-12-2010, sekaligus menampilkan semua tanggalnya yang harinya Minggu.
<?php
$date1 = "05-10-2010";
$date2 = "05-12-2010";
// memecah bagian-bagian dari tanggal $date1
$pecahTgl1 = explode("-", $date1);
// membaca bagian-bagian dari $date1
$tgl1 = $pecahTgl1[0];
$bln1 = $pecahTgl1[1];
$thn1 = $pecahTgl1[2];
echo "<p>Tanggal yang merupakan hari minggu adalah:</p>";
// counter looping
$i = 0;
// counter untuk jumlah hari minggu
$sum = 0;
do
{
// mengenerate tanggal berikutnya
$tanggal = date("d-m-Y", mktime(0, 0, 0, $bln1, $tgl1+$i, $thn1));
// cek jika harinya minggu, maka counter $sum bertambah satu, lalu tampilkan tanggalnya
if (date("w", mktime(0, 0, 0, $bln1, $tgl1+$i, $thn1)) == 0)
{
$sum++;
echo $tanggal."<br>";
}
// increment untuk counter looping
$i++;
}
while ($tanggal != $date2);
// looping di atas akan terus dilakukan selama tanggal yang digenerate tidak sama dengan $date2.
// tampilkan jumlah hari Minggu
echo "<p>Jumlah hari minggu antara ".$date1." s/d ".$date2." adalah: ".$sum."</p>";
?>
thx gan atas informasinya..
oke gan.. sama2
Gan kalo menghitung tanggal tanpa menghitung hari sabtu, minggu dan hari libur nasional gimana ?
klo menghitung tanggal dikurangi hari sabtu minggu sih tinggal pake rumus gan.. tapi klo yang hari libur nasional yah harus di set sendiri.
Gan Maaf Nih Dalam Perhitungan Tanggal Gimana kalo ada tanggal libur nasional dan hari sabtu tidak di hitung, caranya gimana ?? Mohon Bantuannya
Trims
klo menghitung tanggal – hari libur manggu + sabtu dan hari libur nasional caranya di itung manual gan.. jadi agan inputin dulu tanggal2 hari libur nasional berapa dan dikurangin 2 ditiap minggu gan.
Scriptnya mantap Gan.
Thanks
Salut atas tutorialnya.
thanks gan @nets sama gan @arts
bro, bgm cara menampilakan data yg berulang tahun di antara dua tanggal yg kita input.
thx utk masukkannya
salam
maksudnya gmn bos.. bisa kasih contohnya g permisalnnya..
Thx buat respon nya.
Saya mempunyai table “tb_anggota” dan salah satu field nya “tgl_lahir”.
Saya ingin report utk menampilkan anggota yg lahir dari tanggal “xxxx-xx-xx” sampai tanggal “xxxx-xx-xx”
tgl=yyyy-mm-dd
Saya sdh coba query :
$query = “Select nm_anggota as nama from tb_anggota where tgl_lahir BETWEEN ‘$_POST[tgl_from]‘ AND ‘$_POST[tgl_to]‘”;
Mis: kita masukkan tgl_from=’2011-11-01′ dan tgl_to=’2011-11-30′
Maka akan tampil anggota yg lahir di antara tgl di atas, sementara apabila ada anggota yg lahir di tgl=’2009-11-20′ ngak muncul.
Tolong mas bantuannya.
Semoga dpt di pahami.
Salam
klo untuk menampilkan data. yaitu hanya dipermainan query nya.
misal. $sqlquery = “select * from tb_anggota where id_anggota = ‘no anggota’”;
jadi untuk menampilkan pake $query = mysql_query($sqlquery);
$data = mysql_fetch_array($query);
ini menampilkan tgl lahir
$tanggal_lahir = $data['tgl_lahir'];