|
|
|
| Помогите пожалуйста: есть дата, например 1956-05-05. нужно вычислить сколько лет пользователю и если через 3 дня у него день рождения, то совершить какое-нить действие, например вывести ссылку : поздравить. | |
|
|
|
|
|
|
|
для: FaStY
(21.06.2006 в 19:57)
| |
<?php
$date = "1956-05-05";
// парсим дату рождения
list($y, $m, $d) = explode("-", $date);
// получим метку времени для дня и месяца
// рождения текущего года
$stamp = mktime(0, 0, 0, $m, $d, date("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(0, 0, 0, $m, $d, $y);
print "Уважаемый мембер, ты прожил ".floor((time() - $stamp) / (60*60*24*365))." лет.";
?>
|
Просто полезная тема: http://softtime.ru/forum/read.php?id_forum=1&id_theme=10835 | |
|
|
|
|
|
|
|
для: Саня
(21.06.2006 в 20:34)
| | опасно... Глючить будет для тех бедолаг, которые 29 февраля родились.... | |
|
|
|
|
|
|
|
для: Саня
(21.06.2006 в 20:34)
| | чет не катит.
1) поставил сегодняшнюю дату- пишет, что О, да у тебя скоро днюха!
2) нуна именно с учетом дня и месяца. | |
|
|
|
|
|
|
|
для: FaStY
(21.06.2006 в 20:46)
| | Да, я заметил. Вот новый вариант:
<?php
$date = "1956-06-26";
list($y, $m, $d) = explode("-", $date);
$stamp = mktime(0, 0, 0, $m, $d, date("Y")); // день рождения чела в этом году
$four = strtotime("4 days ago"); // четыре дня назад от текущего времени
$fwd = strtotime("+4 days"); // четыре дня вперёд от текущего времени
$time = time(); // сейчас
if ( $stamp >= $four && $stamp < $time ) {
print "О, да у тебя скоро днюха!";
} elseif ( $stamp > $time && $stamp < $fwd ) {
print "С днём рождения тебя, дружище!";
}
?>
|
| |
|
|
|
|
|
|
|
для: Саня
(21.06.2006 в 20:54)
| | хех... странно, но не пашет | |
|
|
|
|
|
|
|
для: FaStY
(21.06.2006 в 20:46)
| | Что-то форум глючит - всё не могу отредактировать свой пост.
Короче, правильная версия в аттаче. | |
|
|
|
|
|
|
|
для: Саня
(21.06.2006 в 21:14)
| | неа, не правильно, я ставлю вчерашний день- пишет с днем рождения тебя | |
|
|
|
|
|
|
|
для: 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 "С днюхой";}
}
|
| |
|
|
|
|
|
|
|
для: FaStY
(21.06.2006 в 21:16)
| | Всё правильно. За четыре дня до д/р скрипт оповещает о грядушей попойке. И в течении четырёх дней после д/р поздравляет с прошедшим. Если нужно именно в тот день, когда д/р, нужно переписать блок кода таким образом:
if ( $stamp > $four && $stamp > $time ) {
print "О, да у тебя скоро днюха!";
} elseif ( $m."-".$d === date("m-d") ) {
print "С днём рождения тебя, дружище!";
}
|
| |
|
|
|
|
|
|
|
для: FaStY
(21.06.2006 в 19:57)
| |
<?php
$date = "1956-05-05";
list($y, $m, $d) = explode("-", $date);
$stamp = mktime(0, 0, 0, $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)." лет.";
|
но она под виндой не валит, а нуна чеб и од виндой работало | |
|
|
|