[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Формат даты
grigoriy
подскажите пожалуйста, как сделать чтоб скрипт php переводил формат даты рождения полученный с mysql в число..
к примеру с 2000-01-01 в 10 лет.




Спустя 1 минута, 36 секунд (27.11.2010 - 15:43) vinnie написал(а):
создаёшь поле birthday типа date, потом отнимаешь от текущей даты даты рождения из базы и все

Спустя 50 секунд (27.11.2010 - 15:44) Игорь_Vasinsky написал(а):
ну....

1.бери сегодняшний год
2.из бд выдёргивый базу (отскай сё кроме првых четырёх символов)

отнимай п1 - п2

Спустя 2 минуты, 3 секунды (27.11.2010 - 15:46) grigoriy написал(а):
я как бы новичок)

не моли бы пример? wink.gif

Спустя 8 минут, 9 секунд (27.11.2010 - 15:54) Игорь_Vasinsky написал(а):
ну допустим дата из бд - $date_bd

тогда первые 4 символа от нё это:

$need_int = (int)substr($datebd,0, 4);


(int) мы определили что это число ане строка

нынешний год это

$now_year = date("Y");


возраст =

$now_year - $need_int;

вроде так

Спустя 31 минута, 51 секунда (27.11.2010 - 16:26) grigoriy написал(а):
спасибо, попробую)

Спустя 2 минуты, 29 секунд (27.11.2010 - 16:28) vinnie написал(а):
там ничего сложного

Спустя 39 минут, 23 секунды (27.11.2010 - 17:08) twin написал(а):
Дарю, пока добрый)))
Многофункциональная фишка. Можно добавить другие методы, деньги допустим определять.
<?php 

class
Find_Form
{

public $age;
public $forms = array('год', 'года', 'лет');

public function __construct($forms = false)
{
if(!empty($forms))
$this->forms = $forms;
}

public function findAge($date, $last = false)
{

$this->age = date("Y", strtotime("now")) - date("Y", strtotime($date));

if(date("n", strtotime("now")) < date("n", strtotime($date)))
$this->age--;

if(date("n", strtotime("now")) === date("n", strtotime($date)))
if(date("j", strtotime("now")) < date("j", strtotime($date)))
$this->age--;

$last = !empty($last) ? $this->createForm() : '';

return $this->age .' '. $last;
}


public function createForm($num = '')
{

if(empty($num))
$num = $this->age;

$num = abs($num) % 100;
$n = $num % 10;

if ($num > 10 && $num < 20)
return $this->forms[2];
if ($n > 1 && $n < 5)
return $this->forms[1];
if ($n == 1)
return $this->forms[0];

return $this->forms[2];
}

}



$obj = new Find_Form();

echo $obj->findAge('1990-01-20', true);

Кто разберется, тот молодец. Кто нет - я статью попозже напишу на ирбисе. :)

Спустя 11 минут, 42 секунды (27.11.2010 - 17:19) Игорь_Vasinsky написал(а):
Дяд Коль... а у меня реализация чё совсем неканает?

Спустя 25 минут, 30 секунд (27.11.2010 - 17:45) twin написал(а):
Ну не то, чтобы не совсем. Просто ты не учитываешь стыки. Вот если допустим дата рождения 2000-12-20, то на сегодня полных лет 19, а твой способ покажет 20.

Спустя 12 минут, 59 секунд (27.11.2010 - 17:58) Игорь_Vasinsky написал(а):
а.... ну да... нужно щё месяц и день учитывать...
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.