Parašė AgS· 2010 Rugp. 20 16:08:19
#1
Sveiki, turiu tokia problemą. Man reikia, kad pagal gimimo datą atvaizduotų kiek žmogui yra metų. Turiu tokią funkciją:
//calculate years of age (input string: YYYY-MM-DD)
function birthday ($birthday){
list($year,$month,$day) = explode("-",$birthday);
$year_diff = date("Y") - $year;
$month_diff = date("m") - $month;
$day_diff = date("d") - $day;
if ($day_diff < 0 || $month_diff < 0)
$year_diff--;
return $year_diff;
}
Problema ta, kad žmogaus metus skaičiuoja tik pagal metus, o ne pagal mėnesį ir dieną. T.y. jei nustačiau, kad gimiau 1991-08-01 tai rodys, kad man 18 metų (nors iš tikro turi būti 19). Gal žinot kaip išspręsti šitą bėdą?
Parašė nbanba· 2010 Rugp. 20 17:08:49
#2
<?php
function birthday ($birthday){
list($year,$month,$day) = explode("-",$birthday);
$year_diff = date("Y") - $year;
$month_diff = date("m") - $month;
$day_diff = date("d") - $day;
if ($day_diff < 0 || $month_diff < 0)
$year_diff--;
return $year_diff;
}
echo birthday ("1991-08-01");
?>
Gaunu 19. Gal su serverio laiku problemos?
Ką gauni įrašęs:
<?php
echo date("Y-m-d");
?>
Parašė AgS· 2010 Rugp. 20 17:08:29
#3
hm, blogą pavyzdį nurodžiau. Pvz jei įvedi
echo birthday ("1992-01-28");
rodo 17, o turi būti 18
O datą gerą rodo, t.y. 2010-08-20