Temos pavadinimas: WordPress, Shopify ir PHPFusion programuotojų bendruomenė :: Problema su funkcija

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