Форум программистов
 
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

Вернуться   Форум программистов > Скриптовые языки программирования > PHP
Регистрация

Восстановить пароль
Повторная активизация e-mail

Здесь нужно купить рекламу за 25 тыс руб в месяц! ) пишите сюда - alarforum@yandex.ru

Ответ
 
Опции темы
Старый 15.07.2010, 12:45   #1
siteograf
Пользователь
 
Регистрация: 19.10.2009
Сообщений: 11
По умолчанию Проверка даты рождения относительно текущей.

Добрый день, спецы PHP! Помогите пожалста решить следующую проблему.

У меня есть переменная $born (дата рождения), выводится в формате 15.05.1971

Если кто знает, напишите пожалуйста код проверки, что если $born попадает в промежуток следующих 5ти дней от текущей даты, то переменная $x=1, если не попадает, то $x=0.

Это нужно для того чтобы вывести людей у которых скоро будет день рождения. Естественно для проверки год рождения во внимание принимать нельзя.
siteograf вне форума   Ответить с цитированием
Старый 15.07.2010, 14:47   #2
Linel
Форумчанин
 
Аватар для Linel
 
Регистрация: 21.02.2009
Сообщений: 372
По умолчанию

PHP код:
<?php
$born 
"20.07.1971";
$born explode("."$born);
list(
$day$month) = $born;

$now time();

$year_now date("Y");
$next_birthday mktime(000$month$day$year_now);

$dif = ($next_birthday $now)/(60*60*24);

if (
$dif 0)
  
$x 0;
elseif (
$dif <= 5)
  
$x 1;
else
  
$x 0;


echo 
$x;

?>
Я бы делал так наверно

Значит, сначало я создаю массив, в котором будут храниться день, месяц и год рождения субъекта. Далее, нас будут интересовать только день и месяц рождения, так как задачи подсчитаь сколько ему лет у нас нету ) Потом я создаю метку времени для текущего момента. Она хранится в переменной $now (в секундах). В переменной $year_now хранится информация о текущем годе. Это необходимо, чтобы затем создать метку времени дня рождения твоего субъекта в этом году. $dif - это разница между днем рождения в этом году и текущем времени (в днях). Далее с помощью IF'a смотрим. Если разница меньше нуля, значит в этом году днюшка уже была. Наш $x = 0. Если же разница не меньше нуля, то это означает, что днюха еще будет. Тогда если разница меньше или равна 5, твой х = 1 иначе днюшка еще за горами, х = 0.
No name. Just Linel.
Linel вне форума   Ответить с цитированием
Старый 15.07.2010, 19:10   #3
werewolf999
Пользователь
 
Регистрация: 04.05.2010
Сообщений: 46
По умолчанию

ну я бы сделал это чуть иначе - с использованием функции strtotime
PHP код:
<?php
$born 
"21.07.1971";

$born strtotime($born);
$now time();
$next_birthday mktime(000date('m',$born), date('d',$born), date('Y'));

if (
$next_birthday $now && $next_birthday strtotime('+5 day')) {
    
$x 1;
} else {
    
$x 0;
}

echo 
$x;
?>
изменения в принципе больше косметические, но есть и одно преимущество - не надо заморачиваться по поводу входящей даты (скрипт поймет и 21-07-1971)
werewolf999 вне форума   Ответить с цитированием
Старый 16.07.2010, 03:45   #4
Johnatan
Antimoderаtoris
Участник клуба
 
Регистрация: 08.02.2008
Сообщений: 1,251
По умолчанию

strtotime крайне нестабильная функция. То и дело норовит дату за месяц принять. Не советую её использовать там, где можно использовать метод предыдущего автора (массив, перевод в юникс формат времени через mktime. Тот вариант точно не ошибётся.
Johnatan вне форума   Ответить с цитированием
Ответ

Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Горячая клавиша для текущей даты sergantikus Microsoft Office Excel 4 30.06.2010 13:57
присвоение переменной текущей даты KaimNotark Помощь студентам 1 29.01.2010 09:17
Зависимость формулы от текущей и прошедшей даты. segail Microsoft Office Excel 13 19.09.2009 15:36
Смещение рамки выделения ячейки (курсора), относительно текущей вниз. hugoboss Microsoft Office Excel 2 19.01.2008 12:31
Вставка текущей даты в БД! Oleg Romanchuk БД в Delphi 5 21.08.2007 19:59


21:38.


Powered by vBulletin® Version 3.8.11
Copyright ©2000 - 2019, Jelsoft Enterprises Ltd.