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

Форум PHP

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

 

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

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

тема: Сколько дней осталось до даты рождения сайта
 
 автор: Buhen   (08.09.2007 в 21:09)   письмо автору
 
 

Всем привет! Мне нужно сделать дату, определяющую скоко дней осталось до день варения сайта. Дата день рождения сайта постоянная. Ну вот есть у меня такой код но он определяет немного неправильно дату.(день рождения сайта 29 августа(год как понимаете не имеет значения))
Вот код:

<?
$date 
date("До дня варенья сайта осталось m месяцев и d дней"mktime(000298)-time());
echo 
$date;
?>

Жду ответа

   
 
 автор: Buhen   (08.09.2007 в 21:37)   письмо автору
 
   для: Buhen   (08.09.2007 в 21:09)
 

Почему то при моем коде отображается что осталось 8 мес 31 день а должго быть 11мес с небольшим

   
 
 автор: ddhvvn   (08.09.2007 в 22:12)   письмо автору
 
   для: Buhen   (08.09.2007 в 21:37)
 

Нужно 29 и 8 поменять местами!


mktime -- Возвращает метку времени для заданной даты
Description
int mktime ( [int hour [, int minute [, int second [, int month [, int day [, int year [, int is_dst]]]]]]] )

   
 
 автор: Trianon   (08.09.2007 в 22:29)   письмо автору
 
   для: Buhen   (08.09.2007 в 21:37)
 

после дня рождения этот код будет показывать ерунду.

   
 
 автор: ddhvvn   (08.09.2007 в 22:41)   письмо автору
 
   для: Trianon   (08.09.2007 в 22:29)
 

Поэтому скорее всего придется или изменить код (добавить год) или ... идею! ;-)

   
 
 автор: Trianon   (08.09.2007 в 22:45)   письмо автору
 
   для: ddhvvn   (08.09.2007 в 22:41)
 

mktime(0, 0, 0, 29, 8)-time()
заменить на
(365+mktime(0, 0, 0, $bd_month , $bd_mday)-time())%365

   
 
 автор: Buhen   (08.09.2007 в 23:49)   письмо автору
 
   для: Trianon   (08.09.2007 в 22:45)
 

Такой код не действует:

<? 
$bd_month 
8;
$bd_mday 29;
$date date("До дня варенья сайта осталось m месяцев и d дней", (365+mktime(000$bd_month $bd_mday)-time())%365); 
echo 
$date
?>

   
 
 автор: Trianon   (09.09.2007 в 00:02)   письмо автору
 
   для: Buhen   (08.09.2007 в 23:49)
 

конечно.
Функция date не предназначена для вывода интервалов.
Только для вывода абсолютных моментов времени.

А .. ну да.. я тоже наврал.
но ход мысли понятен.

   
 
 автор: Buhen   (09.09.2007 в 00:06)   письмо автору
 
   для: Trianon   (09.09.2007 в 00:02)
 

Что то я не понял почему у меня код не действует такой? может объясните что вы подразумеваете под
"А .. ну да.. я тоже наврал.
но ход мысли понятен." ?

   
 
 автор: Trianon   (09.09.2007 в 00:10)   письмо автору
 
   для: Buhen   (09.09.2007 в 00:06)
 

найдите того , кто Вам сказал, что date("До дня варенья сайта осталось m месяцев и d дней", можно использовать в таком контексте. И сильно его стукните.
Так писать нельзя. Вообще.

Читайте документацию на date()
m - это не количество месяцев, а порядковый номер месяца.
d - это порядковое число дня в месяце , а не количество дней.

   
 
 автор: Buhen   (09.09.2007 в 00:58)   письмо автору
 
   для: Trianon   (09.09.2007 в 00:10)
 

Дак я не понял как вывод то сделать? date("До дня варенья сайта осталось (тут что написать) месяцев и (тут что написать) дней",

   
 
 автор: Trianon   (09.09.2007 в 01:35)   письмо автору
 
   для: Buhen   (09.09.2007 в 00:58)
 

Вы понимаете разницу между "9 сентября 2007 года " и " 182 дня до дня рождения"?

Первое значение - дата - абсолютный момент времени.
Второе значение - интервал времени.

Функция date предназначена для вывода дат.
Функция date не предназначена для вывода интервалов.
Она никогда не умела их выводить, и уметь не будет.

Так что ничего там не написать.

Хочется получить честный ответ - пишите алгоритм пересчета одной даты в другую.

   
 
 автор: Buhen   (09.09.2007 в 01:42)   письмо автору
 
   для: Trianon   (09.09.2007 в 01:35)
 

Значит скрипт для моей темы не сделать? жаль

   
 
 автор: Trianon   (09.09.2007 в 01:59)   письмо автору
 
   для: Buhen   (09.09.2007 в 01:42)
 

Скрипт сделать, конечно, можно.
Но только функцию, которая посчитает количество месяцев и дней, придется написать самому.

Ради интереса сейчас попробую набросать.

   
 
 автор: Trianon   (09.09.2007 в 02:39)   письмо автору
 
   для: Trianon   (09.09.2007 в 01:59)
 


<?
function to_bd($bd$bm)
{
   
$ml = array(03128313031,30313130313031);
   list(
$cd$cm$cy) = explode('/'date('d/m/Y'));
   
$cd intval($cd);   $cm intval($cm);     $cy intval($cy);
   
$bd intval($bd);   $bm intval($bm);
   
$nm $nd 0;
   if(
$cd <= $bd && $cm == $bm)
     { 
$nd $bd $cd$cd $bd; }
   else
   {
     
$nd $bd $cd;
     if(
$cd $bd)
     {
      
$nm = -1;
      
$nd $ml[$cm]+ (($cm == 2) & !($cy &3))-$cd+$bd;
      
$cd $bd;
     }
     
$nm += ($bm-$cm+12)%12;
   }
   return 
"From today to birthday total of $nm months $nd days";
 }
 print 
to_bd(8,3);
?>

   
 
 автор: Buhen   (09.09.2007 в 03:29)   письмо автору
 
   для: Trianon   (09.09.2007 в 02:39)
 

Большое спасибо! Я даже такой скрипт бы не написал! Огромое спасибо!
1 вопросик если можно: Вы откладывате хоть скрипты для себя которые делаете для других?

   
 
 автор: Trianon   (09.09.2007 в 04:09)   письмо автору
 
   для: Buhen   (09.09.2007 в 03:29)
 

> Вы откладывате хоть скрипты для себя которые делаете для других?

Которые здесь? Крайне редко.

Один случай помню. Самый длинный (по времени) скрипт, мною здесь выданный, если не ошибаюсь, разбирал анимированный GIF. Вот тут: http://softtime.ru/forum/read.php?id_forum=1&id_theme=13137
Делал я его часа три, или около того.
Вот его - сохранил.
Кстати, поиск здесь занял 10 секунд. Так что смысл хранить у себя - невелик.

   
Rambler's Top100
вверх

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