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

Форум PHP

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

 

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

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

тема: две недели до заданной даты
 
 автор: P@Sol   (21.06.2006 в 11:34)   письмо автору
 
 

в текстовом файле(далее файл) хранится дата в формате 8.3.2004 (т.е. это типа значит - 8 марта 2004), php-файл (далее обработчик) считывает этот файл. Обработчик запускатся будет ежедневно.
как в обработчике определить, что до даты из файла осталось две недели (год не учитывается)?

   
 
 автор: P@Sol   (21.06.2006 в 11:55)   письмо автору
 
   для: P@Sol   (21.06.2006 в 11:34)
 

вот что написал (вичитаем дни):

<?
        $nod 
= array (31,28,31,30,31,30,31,31,30,31,30,31);

        
$ac_month date("n");           //месяц 1..12
        
$ac_day date("j");           //день 1..31

//правка на високосный год
if (date("L")==1) {$nod[1]=29;}

$temp_day $ac_day 14;
if (
$temp_day 1)
        {
        
$temp_month $ac_month 1;
        
$ac_day_next $nod[$temp_month]+$temp_day+1;
        }
        else
        {
        
$temp_month $ac_month;
        
$ac_day_next $temp_day;
        }
echo 
$ac_day_next.".".$temp_month;
?>

прибавляем
<?
        $nod 
= array (31,28,31,30,31,30,31,31,30,31,30,31);

        
$ac_month date("n");           // 1..12
        
$ac_day date("j");           //1..31


if (date("L")==1) {$nod[1]=29;}

$temp_day $ac_day 14;
if (
$temp_day $nod[$ac_month])
        {
        
$temp_month $ac_month 1;
        
$ac_day_next $temp_day $nod[$ac_month];
        }
        else
        {
        
$temp_month $ac_month;
        
$ac_day_next $temp_day;
        }
echo 
$ac_day_next.".".$temp_month;

   
 
 автор: cheops   (21.06.2006 в 12:33)   письмо автору
 
   для: P@Sol   (21.06.2006 в 11:34)
 

А нельзя изменить формат хранения даты с DD.MM.YYYY на UNIXSTAMP - число секунд, начиная с полуночи первого января 1970 года? Было бы гораздо удобнее оперировать такой датой?

   
 
 автор: P@Sol   (21.06.2006 в 13:06)   письмо автору
 
   для: cheops   (21.06.2006 в 12:33)
 

в большенстве случаев у меня в том файле стоит d.m - это означает что событие ежегодное, а если есть год, то событие "одноразовое". если такое можно реализовать на unixstamp, то я могу перейти на него

   
 
 автор: P@Sol   (22.06.2006 в 15:09)   письмо автору
 
   для: P@Sol   (21.06.2006 в 13:06)
 

cheops?

   
 
 автор: ec_stasis   (21.06.2006 в 12:41)   письмо автору
 
   для: P@Sol   (21.06.2006 в 11:34)
 


<?
//...
//... чтение из файла даты в $fdate
//...

list ($day$month$year)  = explode ('.'$fdate);
//file time
$ftime mktime(000$month$day$year);
//curent time
$ctime time();

//today start - vremja na4ala segodbjashnego dnja
$tdstart date('d-m-Y'$ctime);

list (
$day$month$year)  = explode ('-'$tdstart);

//today start - vremja na4ala segodbjashnego dnja
$tdstart mktime(000$month$day$year);

$two_weeks 2*7*24*3600;

if (
$ftime $tdstart == $two_weeks) {
    echo 
"осталось 2 недели";
}



Только может быть будет не совсем совпадать, тогда надо ставить проверку +- несколько секунд

   
 
 автор: ec_stasis   (21.06.2006 в 13:05)   письмо автору
 
   для: ec_stasis   (21.06.2006 в 12:41)
 

Можно даже проще сделать: прибавлять 2 недели к сегодняшнему timestamp'у и проверять, входит ли это дело в дипазон от начала дня в файле и до конца этого дня...

   
Rambler's Top100
вверх

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