Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Возраст по дате рождения
 
 автор: helovek   (21.02.2009 в 17:57)   письмо автору
 
 

как же правильнее?
<?php
 $age
="";
$dt=date("Y-m-d");
  
$Y=date("Y");
    
$m=date("m");
     
$d=date("d");



    
$berth="2008-02-21";

  
//  echo $berth;
    
$god substr($berth,0,-6);
  
// echo $god;
     
$month =substr($berth,5,-3);
    
// echo $month;
     
$day =substr($berth,8);
  
//  echo $day;
   
if($month>$m){
     
$age $Y-$god;
   }
   if (
$month<$m){
   
$age $Y-$god-1;
     echo 
$age;
   }
   else {
     echo 
$age;
   }

  Ответить  
 
 автор: а-я   (21.02.2009 в 18:56)   письмо автору
 
   для: helovek   (21.02.2009 в 17:57)
 

а данные из БД идут?

  Ответить  
 
 автор: helovek   (21.02.2009 в 21:29)   письмо автору
 
   для: а-я   (21.02.2009 в 18:56)
 

Нет пока не идут, не доходят пока!

  Ответить  
 
 автор: HaJIuBauKa   (22.02.2009 в 04:33)   письмо автору
 
   для: helovek   (21.02.2009 в 17:57)
 

вот так думаю будет правильней

<?php

$berth
="1980-02-23";

$age date("Y"strtotime("now")) - date("Y"strtotime($berth));
if (
date("n"strtotime("now")) < date("n"strtotime($berth))) {
    
$age--;
}
if (
date("n"strtotime("now")) === date("n"strtotime($berth))) {
    if (
date("j"strtotime("now")) < date("j"strtotime($berth))) {
        
$age--;
    }
}

echo 
"Вам <b>$age</b> полных лет";

?>


сюда нужно еще включить проверку на правильность введенной даты :)

  Ответить  
 
 автор: helovek   (22.02.2009 в 09:02)   письмо автору
 
   для: HaJIuBauKa   (22.02.2009 в 04:33)
 

Большое спасибо!

  Ответить  
 
 автор: tAleks   (25.10.2009 в 09:32)   письмо автору
 
   для: helovek   (21.02.2009 в 17:57)
 

Тоже сегодня задумался над этим вопросом.
Вот че придумал:

<?php
$bd 
'1930-10-25'// Дата рождения
$b explode('-'$bd); // Разбираем ее на части
$cy date("Y"); // Текущий год
$age $cy $b[0]; // Возраст методом вычисления годов
$bd_cy $cy.$b[1].$b[2]; // Дата дня рождения в этом году
$now date("Ymd"); // Текущая дата целиком

// Сравниваем даты, если текцщая дата
// меньше даты дня рождения в этом году, отнимаем 1 год.
if($now $bd_cy$age--;

echo 
$age;
?>


Думаю, что это должно работать точно, с любыми датами рождения. :)

  Ответить  
 
 автор: Drago   (25.10.2009 в 10:54)   письмо автору
 
   для: helovek   (21.02.2009 в 17:57)
 

Так, будет проще. Дата рождения никак не ограничена, главное соблюдать ее формат.

<?php
// Важно, чтобы дата была в таком формате
$berth '1901-02-21';

// Если дата не соответствует формату выше,
// то в этой строке нужно привести ее к формату
// 19010221 (yyyymmdd)
$bday = (int)str_replace('-'''$berth);
$now = (int)date('Ymd');

$age floor(($now $bday) / 10000);

echo 
$age;

  Ответить  
 
 автор: psychomc   (25.10.2009 в 11:35)   письмо автору
 
   для: helovek   (21.02.2009 в 17:57)
 

я делал вот так. правда под определенный формат:


<?php
function hm_years($date)
{
    
// находим год в дате
    
$year_date substr((strrchr($date,".")),1);
    
// находим разность с текущим
    
$years_diff date("Y") - $year_date;
        
// возвращаем кол-во плных лет
    
return $years_diff;    
}

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования