Help : Macam mana nak kira Umur dari DOB using PHP
Salam guys,sory baru nak menapak dalam php.
Ali tgh develope satu sistem yang memerlukan pengiraan umur. Igatkan masalah dah solve bila ali jupe satu kding tuh, mmg dia leh kira umur. tp kira umur dr tahun lahir jer. So sekarang nih bos ali nak suruh ali cari plak pengiraan yang exactly boleh kira hari dan bulan lahir. Cth : katalah ali lahir 1/12/1980..
kalau kira by tahun umur ALi hari ni (2/11/2009)ialah29 tahun,
tapi bos ali x nak mcm tuh dia nak umur tuh tepat cam umur Alli hari ini ialah 28 tahun 11 bulan 1 hari.
anyone, help me. thanks <?
function date_diff($d1, $d2)
{
if ($d1 < $d2){
$temp = $d2;
$d2 = $d1;
$d1 = $temp;
}else{
$temp = $d1;
}
$d1 = date_parse(date("Y-m-d H:i:s",$d1));
$d2 = date_parse(date("Y-m-d H:i:s",$d2));
//seconds
if ($d1['second'] >= $d2['second']){
$diff['second'] = $d1['second'] - $d2['second'];
}
else {
$d1['minute']--;
$diff['second'] = 60-$d2['second']+$d1['second'];
}
//minutes
if ($d1['minute'] >= $d2['minute']){
$diff['minute'] = $d1['minute'] - $d2['minute'];
}
else {
$d1['hour']--;
$diff['minute'] = 60-$d2['minute']+$d1['minute'];
}
//hours
if ($d1['hour'] >= $d2['hour']){
$diff['hour'] = $d1['hour'] - $d2['hour'];
}
else {
$d1['day']--;
$diff['hour'] = 24-$d2['hour']+$d1['hour'];
}
//days
if ($d1['day'] >= $d2['day']){
$diff['day'] = $d1['day'] - $d2['day'];
}
else {
$d1['month']--;
$diff['day'] = date("t",$temp)-$d2['day']+$d1['day'];
}
//months
if ($d1['month'] >= $d2['month']){
$diff['month'] = $d1['month'] - $d2['month'];
}
else {
$d1['year']--;
$diff['month'] = 12-$d2['month']+$d1['month'];
}
//years
$diff['year'] = $d1['year'] - $d2['year'];
return $diff;
}
$born_date = mktime(6,30,1,4,15,1977);
$date_diff_array = date_diff($born_date, time());
echo 'Age = '. $date_diff_array['year'] .' y '. $date_diff_array['month'].' m '. $date_diff_array['day'] .' d';
?> Post Last Edit by ana_una at 2-11-2009 16:28
$born_date = mktime(6,30,1,4,15,1977); <----- befday tuan manager ke ni?Glemer tauuu...;P
ok... ni modified code yg bole tambah utk baca variable utk tarikh lahir..
sori erkk tuan manager.. haijek skrip skit... kalo salah tolong betoikan...:$
<?
function date_diff($d1, $d2)
{
if ($d1 < $d2){
$temp = $d2;
$d2 = $d1;
$d1 = $temp;
}else{
$temp = $d1;
}
$d1 = date_parse(date("Y-m-d H:i:s",$d1));
$d2 = date_parse(date("Y-m-d H:i:s",$d2));
//seconds
if ($d1['second'] >= $d2['second']){
$diff['second'] = $d1['second'] - $d2['second'];
}
else {
$d1['minute']--;
$diff['second'] = 60-$d2['second']+$d1['second'];
}
//minutes
if ($d1['minute'] >= $d2['minute']){
$diff['minute'] = $d1['minute'] - $d2['minute'];
}
else {
$d1['hour']--;
$diff['minute'] = 60-$d2['minute']+$d1['minute'];
}
//hours
if ($d1['hour'] >= $d2['hour']){
$diff['hour'] = $d1['hour'] - $d2['hour'];
}
else {
$d1['day']--;
$diff['hour'] = 24-$d2['hour']+$d1['hour'];
}
//days
if ($d1['day'] >= $d2['day']){
$diff['day'] = $d1['day'] - $d2['day'];
}
else {
$d1['month']--;
$diff['day'] = date("t",$temp)-$d2['day']+$d1['day'];
}
//months
if ($d1['month'] >= $d2['month']){
$diff['month'] = $d1['month'] - $d2['month'];
}
else {
$d1['year']--;
$diff['month'] = 12-$d2['month']+$d1['month'];
}
//years
$diff['year'] = $d1['year'] - $d2['year'];
return $diff;
}
////////////////////// edit disini //////////////////////////////////////////
$born_date="1977-04-15"; // call variable tarikh lahir tukar ke ---> $born_date=$row['born_date'];
$born_date=explode ("-",$born_date); //pecah2kan tarikh lahir tu
$born_date = mktime(6,30,1,$born_date,$born_date,$born_date);
////////////////////// tamat edit disini ///////////////////////////////////
//$born_date = mktime(6,30,1,4,15,1977);
$date_diff_array = date_diff($born_date, time());
echo 'Age = '. $date_diff_array['year'] .' y '. $date_diff_array['month'].' m '. $date_diff_array['day'] .' d';
?> apasal dah tukar kaler tamo kuar kaler???:o peh.. bijok akak n... hehe tu bday sapa tah.... terima kasih banyak2 atas pertolongan.
dah berjaya.
:) 5# BorderManager
toche..toche...
tu pasal lama kene benam..
peram lama2...;P terima kasih banyak2 atas pertolongan.
dah berjaya.
:)
alisetan Post at 2-11-2009 16:38 http://forum.cari.com.my/images/common/back.gif
sama-sama banyak2...;P mintak tulun sekali lagi boleh?
date saya format dia d-m-y, so bila sy convert ker y-m-d dia jadi tapi dia x leh calculate..kenapa yer
ni koding yg sy pakai tok convert
$born_date="02/03/1979"; // call variable tarikh lahir tukar ke ---> $born_date=$row['born_date'];
echo 'Tarikh lahir =' .$born_date;
echo "<br>";
$born_date=explode ("/",$born_date);
krsort($born_date); print "<p>".implode("/",$born_date)."</p>";tu
$born_date = mktime(6,30,1,$born_date,$born_date,$born_date);
echo $born_date; ko terbalik tu...
$born_date = mktime(6,30,1,$born_date,$born_date,$born_date);
mktime ($hour, $minute, $second, $month, $day, $year); thank u bro :) wah, ada pakar PHP la..
nak copy nih he4..;P copy je.. FOC copy je.. FOC
BorderManager Post at 8-11-2009 23:50 http://forum.cari.com.my/images/common/back.gif
kalo camtu nk claim pd tuan manager le...;P Post Last Edit by isms at 22-3-2011 08:04
edited.... Reply 13# BorderManager
macam mana pulak kalau kita nak kira date_diff antara dua tarikh.
cth kalau saya ada date1=13/4/1999 dan date2=01/03/2011,
sy cuba modified coding BM bagi tp x jadilah, output asik 41y, 2m, 0 d
sy wt cam ne
------------------------------------------------------------
$date_diff;
$born_date=$date2;
$born_date=explode ("/",$born_date);
krsort($born_date);
implode("/",$born_date);
$born_date = mktime(6,30,1,$born_date,$born_date,$born_date);
$date_diff_array = date_diff($date1, $born_date);
$beza = $date_diff_array['year'] .' y '. $date_diff_array['month'].' m '. $date_diff_array['day'] .' d';
--------------------------------
boleh tolong bgtau tak tang mana yg salah... <?php
function date_diff($d1, $d2)
{
if ($d1 < $d2){
$temp = $d2;
$d2 = $d1;
$d1 = $temp;
}else{
$temp = $d1;
}
$d1 = date_parse(date("Y-m-d H:i:s",$d1));
$d2 = date_parse(date("Y-m-d H:i:s",$d2));
//seconds
if ($d1['second'] >= $d2['second']){
$diff['second'] = $d1['second'] - $d2['second'];
}
else {
$d1['minute']--;
$diff['second'] = 60-$d2['second']+$d1['second'];
}
//minutes
if ($d1['minute'] >= $d2['minute']){
$diff['minute'] = $d1['minute'] - $d2['minute'];
}
else {
$d1['hour']--;
$diff['minute'] = 60-$d2['minute']+$d1['minute'];
}
//hours
if ($d1['hour'] >= $d2['hour']){
$diff['hour'] = $d1['hour'] - $d2['hour'];
}
else {
$d1['day']--;
$diff['hour'] = 24-$d2['hour']+$d1['hour'];
}
//days
if ($d1['day'] >= $d2['day']){
$diff['day'] = $d1['day'] - $d2['day'];
}
else {
$d1['month']--;
$diff['day'] = date("t",$temp)-$d2['day']+$d1['day'];
}
//months
if ($d1['month'] >= $d2['month']){
$diff['month'] = $d1['month'] - $d2['month'];
}
else {
$d1['year']--;
$diff['month'] = 12-$d2['month']+$d1['month'];
}
//years
$diff['year'] = $d1['year'] - $d2['year'];
return $diff;
}
$date1 = '13/4/1999';
$date1 = explode ("/",$date1);
$date1 = mktime(0, 0, 0, $date1, $date1, $date1);
$date2 = '01/03/2011';
$date2=explode ("/",$date2);
$date2 = mktime(0, 0, 0, $date2, $date2, $date2);
$date_diff_array = date_diff($date1, $date2);
echo 'Date diff = '. $date_diff_array['year'] .' y '. $date_diff_array['month'].' m '. $date_diff_array['day'] .' d';
?> Reply 17# BorderManager
terima kasih banyak2 bro.{:1_152:} BorderManager replied at 22-3-2011 10:32 AM
Bro BorderManager,
sy ada koding spt kat bawah ne.
sy dh buat if else statement utk beza kan kaler font untuk value yg berbeza2
cthnya, kalau value tuh lebih >=0 dan <=14, font tukar kaler hijo
kalauselain tuh kaler merah.
sy rs if else stament tuh dh betui dh
cumanya, dia mcm x boleh bc value tuh
menyebablan semua kaler hijo shj wpun ada yg lebih dr 14 hari.
lepas tuh mcm mana yer sy nk convert tahun dh bulan ke bilangan hari shj
cth 1y 2m 10 day(ne cth output), sbb ne kot dia x recognize value, menyebabkan semua jadi kaler hijo.
cth tuh sy nak convert ke integer shj, tok menjadikan ker 435 hari. contohnya lah.
$accComplDt = trim($row['ACC_COMPL_DT']);
$date1 = $accComplDt;//'01/09/2015';
$date1 = explode ("/",$date1);
$date1 = mktime(0, 0, 0, $date1, $date1, $date1);
$accDate = trim($row['ACC_DATE']);
$date2 = $accDate;//'02/10/2015';
$date2=explode ("/",$date2);
$date2 = mktime(0, 0, 0, $date2, $date2, $date2);
$date_diff_array = date_diff($date1, $date2);
$Tempoh = $date_diff_array['year'] .' y '. $date_diff_array['month'].' m '. $date_diff_array['day'] .' d';
//$Tempoh = $date_diff_array['day'] .' d';
if (($Tempoh >= 0) ||(Tempoh <=14))
{
echo "<font color=\"#006600\">" .$Tempoh;
} else {
echo "<font color=\"#FF0000\">" .$Tempoh;
}
isms replied at 7-10-2015 03:36 PM
Bro BorderManager,
sy ada koding spt kat bawah ne.
query dlm SQL terus je
"SELECT IF(DATEDIFF(ACC_COMPL_DT, ACC_COMPL_DT) AS day FROM table";
print '<span style="color: '. ($row['day'] >= 0 || $row['day'] <= 14 ? '#006600' : '#FF0000') .'">'. $row['day'] .'</span>';
Pages:
[1]