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

Форум PHP

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

 

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

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

тема: смотрим сколько лет
 
 автор: FaStY   (21.06.2006 в 19:57)   письмо автору
 
 

Помогите пожалуйста: есть дата, например 1956-05-05. нужно вычислить сколько лет пользователю и если через 3 дня у него день рождения, то совершить какое-нить действие, например вывести ссылку : поздравить.

   
 
 автор: Саня   (21.06.2006 в 20:34)   письмо автору
 
   для: FaStY   (21.06.2006 в 19:57)
 

<?php
$date 
"1956-05-05";

// парсим дату рождения
list($y$m$d) = explode("-"$date);
// получим метку времени для дня и месяца
// рождения текущего года
$stamp mktime(000$m$ddate("Y"));
// проверка разницы между "четыре дня назад"
// и д/р
if ( strtotime("-4 days") < $stamp ) {
  print 
"О, да у тебя скоро днюха!";
} elseif ( 
strtotime("-4 days") >= $stamp && strtotime("-4 days") < ($stamp 259200) ) {
  print 
"С днём рождения тебя, дружище!";
}
?>

А получить возраст - просто-напросто вычесть из текущего года год рождения (но это без учёта месяца и дня). Или так:
<?php
$date 
"1956-05-05";
list(
$y$m$d) = explode("-"$date);
$stamp mktime(000$m$d$y);
print 
"Уважаемый мембер, ты прожил ".floor((time() - $stamp) / (60*60*24*365))." лет.";
?>

Просто полезная тема: http://softtime.ru/forum/read.php?id_forum=1&id_theme=10835

   
 
 автор: Trianon   (21.06.2006 в 20:43)   письмо автору
 
   для: Саня   (21.06.2006 в 20:34)
 

опасно... Глючить будет для тех бедолаг, которые 29 февраля родились....

   
 
 автор: FaStY   (21.06.2006 в 20:46)   письмо автору
 
   для: Саня   (21.06.2006 в 20:34)
 

чет не катит.
1) поставил сегодняшнюю дату- пишет, что О, да у тебя скоро днюха!
2) нуна именно с учетом дня и месяца.

   
 
 автор: Саня   (21.06.2006 в 20:54)   письмо автору
 
   для: FaStY   (21.06.2006 в 20:46)
 

Да, я заметил. Вот новый вариант:
<?php
$date 
"1956-06-26";

list(
$y$m$d) = explode("-"$date);

$stamp mktime(000$m$ddate("Y")); // день рождения чела в этом году
$four  strtotime("4 days ago");            // четыре дня назад от текущего времени
$fwd   strtotime("+4 days");               // четыре дня вперёд от текущего времени
$time  time();                             // сейчас

if ( $stamp >= $four && $stamp $time ) {
  print 
"О, да у тебя скоро днюха!";
} elseif ( 
$stamp $time && $stamp $fwd ) {
  print 
"С днём рождения тебя, дружище!";
}
?>

   
 
 автор: FaStY   (21.06.2006 в 21:14)   письмо автору
 
   для: Саня   (21.06.2006 в 20:54)
 

хех... странно, но не пашет

   
 
 автор: Саня   (21.06.2006 в 21:14)   письмо автору
 
   для: FaStY   (21.06.2006 в 20:46)
 

Что-то форум глючит - всё не могу отредактировать свой пост.
Короче, правильная версия в аттаче.

   
 
 автор: FaStY   (21.06.2006 в 21:16)   письмо автору
 
   для: Саня   (21.06.2006 в 21:14)
 

неа, не правильно, я ставлю вчерашний день- пишет с днем рождения тебя

   
 
 автор: valenok   (21.06.2006 в 21:47)   письмо автору
 
   для: FaStY   (21.06.2006 в 21:16)
 



<?php 
if(date("m")==$m ){
    if(
date("d")>($d-4) AND date("d")<$d){echo "Скоро днюха..";}
    elseif(
date("d")==$d){echo "С днюхой";}
}

   
 
 автор: Саня   (21.06.2006 в 21:53)   письмо автору
 
   для: FaStY   (21.06.2006 в 21:16)
 

Всё правильно. За четыре дня до д/р скрипт оповещает о грядушей попойке. И в течении четырёх дней после д/р поздравляет с прошедшим. Если нужно именно в тот день, когда д/р, нужно переписать блок кода таким образом:
if ( $stamp > $four && $stamp > $time ) {
  print "О, да у тебя скоро днюха!";
} elseif ( $m."-".$d === date("m-d") ) {
  print "С днём рождения тебя, дружище!";
}

   
 
 автор: FaStY   (22.06.2006 в 02:09)   письмо автору
 
   для: FaStY   (21.06.2006 в 19:57)
 


<?php 
$date 
"1956-05-05"
list(
$y$m$d) = explode("-"$date); 
$stamp mktime(000$m$d$y); 
print 
"Уважаемый мембер, ты прожил ".floor((time() - $stamp) / (60*60*24*365))." лет."
?> 

вот это вот не катит, так как нуна учитвать високосный год, ато дата сбивается :(
LOki предложил такую штуку:

$date = "1988-06-24"; 
list($y, $m, $d) = explode("-", $date); 
$stamp = mktime(0, 0, 0, date("m")-$m, date("d")-$d, date("y")-$y);
print "тебе ".date("Y", $stamp)." лет.";

но она под виндой не валит, а нуна чеб и од виндой работало

   
Rambler's Top100
вверх

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