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

Форум PHP

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

 

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

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

тема: сколько осталось дней до какой-то даты .
 
 автор: dima2207   (06.05.2008 в 03:42)   письмо автору
 
 

Всем привет !
Бьюсь над созданием функции что определяет сколько осталось дней до какой - нибудь даты :

<?
//Функция получения секунд
    
function ParseDate($DateStr){
    
$PStr explode("."preg_replace("/[^0-9\.]/"""trim($DateStr)));
    return 
mktime(000NormalDay($PStr[1]), NormalDay($PStr[0]), NormalDay($PStr[2], true));
}

function 
NormalDay($Digit$Year false){
    
$Digit preg_replace("/^0(\d+)/""$1"$Digit);
    if(
$Year){
        if (
strlen($Digit) < 3){
            if (
$Digit 50$Digit 2000 $Digit;
            else 
$Digit 1900 $Digit;
        }
    }
    return 
$Digit;
}
$result='22-09-2009';//Преобразовываем из 22-09-2009 в 22.09.2009
$out1=str_replace('-','.',$result);


$b_dateParseDate($out1);//Преобразуем дату в секунды

$datetime(); // возвращает timestamp на текущий момент.

if ($b_date $date) print'Час Х уже прошол ';

$ostalos$b_date $date

$ostalos_dneyround($ostalos/60*60*24); // сколько дней осталось? секунды*минуты*часы=сутки

print 'ДО Часа Х осталось : '.$ostalos_dney;
?>

но несмотря на это : $ostalos_dney= round($ostalos/60*60*24); // сколько дней осталось? секунды*минуты*часы=сутки на выходе всеравно получаю секунды !
как сделать что-бы выводилось сколько дней осталось а-не секунд ?

   
 
 автор: Maya   (06.05.2008 в 04:07)   письмо автору
 
   для: dima2207   (06.05.2008 в 03:42)
 


$ostalos_dney= round($ostalos/(60*60*24)); // сколько дней осталось? секунды*минуты*часы=сутки

=)

   
 
 автор: dima2207   (06.05.2008 в 04:40)   письмо автору
 
   для: Maya   (06.05.2008 в 04:07)
 

Нет , я так уже думал , если на то-уж пошло то вот так :

$ostalos_dney= round($ostalos/(1000*60*60*24)); // сколько дней осталось? секунды*минуты*часы=сутки 

но всеравно неправельно .

   
 
 автор: Maya   (06.05.2008 в 04:55)   письмо автору
 
   для: dima2207   (06.05.2008 в 04:40)
 


<?
$sutki
=60*60*24;
echo 
"Сутки: ".$sutki." секунд <br>"// 86400 сек
$five_sutok=$sutki*5//
echo "5 cуток: ".$five_sutok." секунд<br>"// 432000 сек
$ostalos$five_sutok+800// для некруглости :)
echo "Осталось в секундах: ".$ostalos." секунд<br>";
$ostalos_dneyround($ostalos/(60*60*24));
echo 
"Осталось в днях: ".$ostalos_dney."<br>";
?>


У меня ваш пример с $ostalos_dney= round($ostalos/(60*60*24)); вывел 504 дня :)

   
 
 автор: dima2207   (06.05.2008 в 05:23)   письмо автору
 
   для: Maya   (06.05.2008 в 04:55)
 

а, ну да майя , вы правы , это я ошибся , я просто данные беру из базы , а там они в таймстампе : 2008-05-07 00-00-00

   
 
 автор: mihdan   (07.05.2008 в 14:17)   письмо автору
 
   для: dima2207   (06.05.2008 в 05:23)
 

>в таймстампе : 2008-05-07 00-00-00
это по вашему timestamp???

   
 
 автор: Atheist   (07.05.2008 в 14:19)   письмо автору
 
   для: mihdan   (07.05.2008 в 14:17)
 

> это по вашему timestamp???
timestamp переводится "метка времени". Да, это тоже timestamp.

   
 
 автор: mihdan   (07.05.2008 в 14:22)   письмо автору
 
   для: Atheist   (07.05.2008 в 14:19)
 

timestamp - POSIX-время, количество секунд прошедшее с 00:00:00 UTC 1 января, 1970 года.

   
 
 автор: Atheist   (07.05.2008 в 14:26)   письмо автору
 
   для: mihdan   (07.05.2008 в 14:22)
 

> timestamp - POSIX-время, количество секунд прошедшее с 00:00:00 UTC 1 января, 1970 года.
Да что ты? Ты хоть создай поле с типом TIMESTAMP в MySQL. Посмотришь, что это из себя там представляет. Оки?

   
 
 автор: mihdan   (07.05.2008 в 14:35)   письмо автору
 
   для: Atheist   (07.05.2008 в 14:26)
 

Atheist, ты не понял. Я не утверждал, что в MySQL время выглядит как 12312313178 (секунды), я просто сказал, что есть по определению timestamp, а про MySQL ясно с начала ее основания, что там такая шняга, что DATETIME == TIMESTAMP == 2008.05.07 14:35 - на мой взгляд это баг.

   
 
 автор: Atheist   (07.05.2008 в 14:40)   письмо автору
 
   для: mihdan   (07.05.2008 в 14:35)
 

> Atheist, ты не понял
Куда уж мне...

> я просто сказал, что есть по определению timestamp
Это определение UNIX timestamp.

> что DATETIME == TIMESTAMP == 2008.05.07 14:35 - на мой взгляд это баг
Почитай мануал. Оки?

   
 
 автор: mihdan   (07.05.2008 в 14:46)   письмо автору
 
   для: Atheist   (07.05.2008 в 14:40)
 

>> Atheist, ты не понял
>Куда уж мне...
Ты я вно до сих пор не догнал

>> я просто сказал, что есть по определению timestamp
>Это определение UNIX timestamp.
Так timestamp - это и есть время в секундах, прошедшее с начала эры UNIX

>> что DATETIME == TIMESTAMP == 2008.05.07 14:35 - на мой взгляд это баг
>Почитай мануал. Оки?
И зачем ты мне мануал суёшь? По-твоему в MySQL DATETIME != TIMESTAMP

   
 
 автор: Atheist   (07.05.2008 в 14:50)   письмо автору
 
   для: mihdan   (07.05.2008 в 14:46)
 

> Так timestamp - это и есть время в секундах, прошедшее с начала эры UNIX
Еще раз объясняю, подробнее: ты дал определение UNIX timestamp
- одного из самых известных видов меток времени. Да, частенько, конечно, говоря "timestamp" подразумевают именно UNIX timestamp, но ты придрался к пользователю в посте "07.05.2008 в 14:17", что "2008-05-07 00-00-00" никакой не timestamp.

> И зачем ты мне мануал суёшь? По-твоему в MySQL DATETIME != TIMESTAMP
Да.

   
 
 автор: mihdan   (07.05.2008 в 14:55)   письмо автору
 
   для: Atheist   (07.05.2008 в 14:50)
 

>> И зачем ты мне мануал суёшь? По-твоему в MySQL DATETIME != TIMESTAMP
>Да.

Только что создал в MySQL 2 поля DATETIME и TIMESTAMP - результат идентичен

   
 
 автор: Atheist   (07.05.2008 в 14:55)   письмо автору
 
   для: mihdan   (07.05.2008 в 14:55)
 

> Только что создал в MySQL 2 поля DATETIME и TIMESTAMP - результат идентичен
OMG...Ты не на внешний вид смотри, а в мануал.

   
 
 автор: mihdan   (07.05.2008 в 15:09)   письмо автору
 
   для: Atheist   (07.05.2008 в 14:55)
 

Так ... а при чем тут внутреннее устройство хранения? Мы говорим именно об отображениее, например


SELECT `datetime`, `timestamp`
FROM     `date`


Выдаст именно идентичные результаты ;)

ЗЫ: OMG...

   
 
 автор: Atheist   (07.05.2008 в 15:22)   письмо автору
 
   для: mihdan   (07.05.2008 в 15:09)
 

> Так ... а при чем тут внутреннее устройство хранения?
Нет, не при чем.

> Выдаст именно идентичные результаты ;)
У нас есть еще, знаешь, INSERT запрос. Попробуй вставить дату 9999-05-07 00-00-00

   
 
 автор: mihdan   (07.05.2008 в 15:37)   письмо автору
 
   для: Atheist   (07.05.2008 в 15:22)
 

Не вижу результатов, потому что ответ ОК - результат идентичен ;) Ты сам пробовал? Скриншот вложи, если у тя что не так

   
 
 автор: Atheist   (07.05.2008 в 15:38)   письмо автору
 
   для: mihdan   (07.05.2008 в 15:37)
 

> Не вижу результатов, потому что ответ ОК - результат идентичен ;)
А теперь сделай свой любимый SELECT.

   
 
 автор: mihdan   (07.05.2008 в 15:41)   письмо автору
 
   для: Atheist   (07.05.2008 в 15:38)
 

Блин да сделал уже. Я тебе еще раз повторяю - результат одинаков, если у тебя не так вышли скриншот!!!

   
 
 автор: Atheist   (07.05.2008 в 15:47)   письмо автору
21.2 Кб
 
   для: mihdan   (07.05.2008 в 15:41)
 

=>

   
 
 автор: mihdan   (07.05.2008 в 15:52)   письмо автору
11.2 Кб
 
   для: Atheist   (07.05.2008 в 15:47)
 

<==

   
 
 автор: Atheist   (07.05.2008 в 15:58)   письмо автору
 
   для: mihdan   (07.05.2008 в 15:52)
 

Remember that although DATETIME, DATE, and TIMESTAMP values all can be specified using the same set of formats, the types do not all have the same range of values. For example, TIMESTAMP values cannot be earlier than 1970 or later than 2038

P.S. =>
P.P.S. `date` - это моя таблица.
P.P.P.S. Ну и что у тебя?

   
 
 автор: mihdan   (07.05.2008 в 16:08)   письмо автору
 
   для: Atheist   (07.05.2008 в 15:58)
 

Это моя - аналог твоей

   
 
 автор: Atheist   (07.05.2008 в 16:13)   письмо автору
 
   для: mihdan   (07.05.2008 в 16:08)
 

И что у тебя за версия MySQL? Моя - 5.0.45. И как ты относишься к тому, что в мануале написано? Врут, да?

   
 
 автор: dima2207   (07.05.2008 в 14:20)   письмо автору
 
   для: mihdan   (07.05.2008 в 14:17)
 

имелось ввиду что в базе у меня первый идет год , а надо число !

   
 
 автор: Trianon   (07.05.2008 в 16:02)   письмо автору
 
   для: dima2207   (06.05.2008 в 03:42)
 

советую обратить внимание на темы
http://softtime.ru/forum/srch.php?id_forum=1&name=gregoriantojd&numberthemes=30&srchwhere=2&logic=1

   
Rambler's Top100
вверх

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