|
|
|
| Всем привет !
Бьюсь над созданием функции что определяет сколько осталось дней до какой - нибудь даты :
<?
//Функция получения секунд
function ParseDate($DateStr){
$PStr = explode(".", preg_replace("/[^0-9\.]/", "", trim($DateStr)));
return mktime(0, 0, 0, NormalDay($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_date= ParseDate($out1);//Преобразуем дату в секунды
$date= time(); // возвращает timestamp на текущий момент.
if ($b_date < $date) print'Час Х уже прошол ';
$ostalos= $b_date - $date;
$ostalos_dney= round($ostalos/60*60*24); // сколько дней осталось? секунды*минуты*часы=сутки
print 'ДО Часа Х осталось : '.$ostalos_dney;
?>
|
но несмотря на это : $ostalos_dney= round($ostalos/60*60*24); // сколько дней осталось? секунды*минуты*часы=сутки на выходе всеравно получаю секунды !
как сделать что-бы выводилось сколько дней осталось а-не секунд ? | |
|
|
|
|
|
|
|
для: dima2207
(06.05.2008 в 03:42)
| |
$ostalos_dney= round($ostalos/(60*60*24)); // сколько дней осталось? секунды*минуты*часы=сутки
|
=) | |
|
|
|
|
|
|
|
для: Maya
(06.05.2008 в 04:07)
| | Нет , я так уже думал , если на то-уж пошло то вот так :
$ostalos_dney= round($ostalos/(1000*60*60*24)); // сколько дней осталось? секунды*минуты*часы=сутки
|
но всеравно неправельно . | |
|
|
|
|
|
|
|
для: 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_dney= round($ostalos/(60*60*24));
echo "Осталось в днях: ".$ostalos_dney."<br>";
?>
|
У меня ваш пример с $ostalos_dney= round($ostalos/(60*60*24)); вывел 504 дня :) | |
|
|
|
|
|
|
|
для: Maya
(06.05.2008 в 04:55)
| | а, ну да майя , вы правы , это я ошибся , я просто данные беру из базы , а там они в таймстампе : 2008-05-07 00-00-00 | |
|
|
|
|
|
|
|
для: dima2207
(06.05.2008 в 05:23)
| | >в таймстампе : 2008-05-07 00-00-00
это по вашему timestamp??? | |
|
|
|
|
|
|
|
для: mihdan
(07.05.2008 в 14:17)
| | > это по вашему timestamp???
timestamp переводится "метка времени". Да, это тоже timestamp. | |
|
|
|
|
|
|
|
для: Atheist
(07.05.2008 в 14:19)
| | timestamp - POSIX-время, количество секунд прошедшее с 00:00:00 UTC 1 января, 1970 года. | |
|
|
|
|
|
|
|
для: mihdan
(07.05.2008 в 14:22)
| | > timestamp - POSIX-время, количество секунд прошедшее с 00:00:00 UTC 1 января, 1970 года.
Да что ты? Ты хоть создай поле с типом TIMESTAMP в MySQL. Посмотришь, что это из себя там представляет. Оки? | |
|
|
|
|
|
|
|
для: Atheist
(07.05.2008 в 14:26)
| | Atheist, ты не понял. Я не утверждал, что в MySQL время выглядит как 12312313178 (секунды), я просто сказал, что есть по определению timestamp, а про MySQL ясно с начала ее основания, что там такая шняга, что DATETIME == TIMESTAMP == 2008.05.07 14:35 - на мой взгляд это баг. | |
|
|
|
|
|
|
|
для: mihdan
(07.05.2008 в 14:35)
| | > Atheist, ты не понял
Куда уж мне...
> я просто сказал, что есть по определению timestamp
Это определение UNIX timestamp.
> что DATETIME == TIMESTAMP == 2008.05.07 14:35 - на мой взгляд это баг
Почитай мануал. Оки? | |
|
|
|
|
|
|
|
для: Atheist
(07.05.2008 в 14:40)
| | >> Atheist, ты не понял
>Куда уж мне...
Ты я вно до сих пор не догнал
>> я просто сказал, что есть по определению timestamp
>Это определение UNIX timestamp.
Так timestamp - это и есть время в секундах, прошедшее с начала эры UNIX
>> что DATETIME == TIMESTAMP == 2008.05.07 14:35 - на мой взгляд это баг
>Почитай мануал. Оки?
И зачем ты мне мануал суёшь? По-твоему в MySQL DATETIME != TIMESTAMP | |
|
|
|
|
|
|
|
для: 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
Да. | |
|
|
|
|
|
|
|
для: Atheist
(07.05.2008 в 14:50)
| | >> И зачем ты мне мануал суёшь? По-твоему в MySQL DATETIME != TIMESTAMP
>Да.
Только что создал в MySQL 2 поля DATETIME и TIMESTAMP - результат идентичен | |
|
|
|
|
|
|
|
для: mihdan
(07.05.2008 в 14:55)
| | > Только что создал в MySQL 2 поля DATETIME и TIMESTAMP - результат идентичен
OMG...Ты не на внешний вид смотри, а в мануал. | |
|
|
|
|
|
|
|
для: Atheist
(07.05.2008 в 14:55)
| | Так ... а при чем тут внутреннее устройство хранения? Мы говорим именно об отображениее, например
SELECT `datetime`, `timestamp`
FROM `date`
|
Выдаст именно идентичные результаты ;)
ЗЫ: OMG... | |
|
|
|
|
|
|
|
для: mihdan
(07.05.2008 в 15:09)
| | > Так ... а при чем тут внутреннее устройство хранения?
Нет, не при чем.
> Выдаст именно идентичные результаты ;)
У нас есть еще, знаешь, INSERT запрос. Попробуй вставить дату 9999-05-07 00-00-00 | |
|
|
|
|
|
|
|
для: Atheist
(07.05.2008 в 15:22)
| | Не вижу результатов, потому что ответ ОК - результат идентичен ;) Ты сам пробовал? Скриншот вложи, если у тя что не так | |
|
|
|
|
|
|
|
для: mihdan
(07.05.2008 в 15:37)
| | > Не вижу результатов, потому что ответ ОК - результат идентичен ;)
А теперь сделай свой любимый SELECT. | |
|
|
|
|
|
|
|
для: Atheist
(07.05.2008 в 15:38)
| | Блин да сделал уже. Я тебе еще раз повторяю - результат одинаков, если у тебя не так вышли скриншот!!! | |
|
|
|
|
 21.2 Кб |
|
|
для: mihdan
(07.05.2008 в 15:41)
| | => | |
|
|
|
|
 11.2 Кб |
|
|
для: Atheist
(07.05.2008 в 15:47)
| | <== | |
|
|
|
|
|
|
|
для: 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. Ну и что у тебя? | |
|
|
|
|
|
|
|
для: Atheist
(07.05.2008 в 15:58)
| | Это моя - аналог твоей | |
|
|
|
|
|
|
|
для: mihdan
(07.05.2008 в 16:08)
| | И что у тебя за версия MySQL? Моя - 5.0.45. И как ты относишься к тому, что в мануале написано? Врут, да? | |
|
|
|
|
|
|
|
для: mihdan
(07.05.2008 в 14:17)
| | имелось ввиду что в базе у меня первый идет год , а надо число ! | |
|
|
|
|