|
|
|
| есть таблица с датами...=) т.е.
$numder_003=$n;
$time_003=time()+($numder_003*60);
$res_003 = date("Y-m-d H:i:s", $time_003);
|
в переменной $n какое-то число..) с помощью этого кода это число превращается в дату такого формата) 2006-03-16 22:36:40 ... )) и дата засовывается в бд..) но..) если число которое в переменной $n очень большое , то..) дата в бд появляется вот такая.1970-01-01 03:00:00.) понятно что эта за дата..) почему она появляется?)) и какое чило максимально может быть в переменной $n чтобы всё было нормально?)) | |
|
|
|
|
|
|
|
для: FBI
(18.03.2006 в 22:39)
| | вероятно оно может быть очень большим, раз в одном году только миллионов тридцать секунд... ну а больше не знаю зачем...
а в примере максимальное значение - около 16,5 миллионов
а вообще мой совет, записывать в базу не "2006-03-16 22:36:40", а прошедшие секунды time()... а при выводе уже обрабатывать - потом проблем меньше будет :) | |
|
|
|
|
|
|
|
для: kasmanaft
(18.03.2006 в 22:52)
| | тут не секунды... =) а минуты..) в году 525600 минут..) ну ечли я введу число 90000000 то уже в базе 1970-01-01 03:00:00 ... ) но мне надо именно так как у меня сделано =) но всё что я сделал не работает если дата меньше текущего времени...) а 1970-01-01 03:00:00 конечно же меньше текущего времени=) никак это исправить нельзя?)
P.S.: да) и в году 31536000 секунд..))) | |
|
|
|
|
|
|
|
для: FBI
(18.03.2006 в 22:56)
| | а в примере максимальное значение - около 16,7 миллионов - высчитал эксперементально :) | |
|
|
|
|
|
|
|
для: kasmanaft
(18.03.2006 в 23:00)
| | ага=) точно) 17000000 уже не получается=)) чтоже мне делать) | |
|
|
|
|
|
|
|
для: FBI
(18.03.2006 в 22:39)
| | В функции date используется тип int. Его размер в памяти - 4 байта, т.е. 2^32 = 4294967296 значения, т.к. первый байт числа - это знак (0 - положительное число, 1 - отрицательное) то число надо поделить на 2. Ну а чтоб узнать максимальное значение вычесть ещё единицу. В итоге у нас получается максимальное значение для переменной $n = 2147483647. | |
|
|
|
|
|
|
|
для: Евгений Петров
(18.03.2006 в 23:03)
| | не.. 2147483647 очень большое)) | |
|
|
|
|
|
|
|
для: FBI
(18.03.2006 в 23:06)
| | это максимальное значение для $time_003... можно вычесть оттуда time() и получим то что надо :) | |
|
|
|
|
|
|
|
для: FBI
(18.03.2006 в 23:06)
| | Хм, а у меня:
<?
echo date("Y-m-d H:i:s",2147483647);
?>
|
Выводит 2038-01-19 05:14:07 | |
|
|
|
|
|
|
|
для: Евгений Петров
(18.03.2006 в 23:13)
| | ну да... у нас к $n прибавляется time()
а.. даже не к $n а к $n умноженному на 60 :)
в итоге получаем 16746175 :) | |
|
|
|
|
|
|
|
для: kasmanaft
(18.03.2006 в 23:17)
| | и это число ещё вроде изменяется..=) с каждым днём ;).. с каждым часом..) с каждой минутой..) вроде..) | |
|
|
|
|
|
|
|
для: FBI
(18.03.2006 в 23:21)
| | с каждой секундой | |
|
|
|
|
|
|
|
для: kasmanaft
(18.03.2006 в 23:17)
| | Кстати а зачем вы на 60 умножаете? | |
|
|
|
|
|
|
|
для: Евгений Петров
(18.03.2006 в 23:24)
| | потому что то число которое я ввожу..=) это типа минуты..) а в вашем примере... число 2147483647 это секунды=) | |
|
|
|
|
|
|
|
для: FBI
(18.03.2006 в 23:33)
| | В переменную date передается время в СЕКУНДАХ прошедшее от 1970-........
Функция time() генерирует текущее время опять же в СЕКУНДАХ.
Т.е. если вы напишете:
<?
echo date("Y-m-d H:i:s",time());
?>
|
То выведется текущая дата и время. И ничего умножать не на что не нужно | |
|
|
|
|
|
|
|
для: Евгений Петров
(18.03.2006 в 23:43)
| | А все я понял, у вас скрипт заносит в базу время + введенное кол-во минут? :) | |
|
|
|
|
|
|
|
для: Евгений Петров
(18.03.2006 в 23:45)
| | угу=) | |
|
|
|
|
|
|
|
для: FBI
(18.03.2006 в 23:47)
| | Тогда сделайте так:
<?
$n = 99999999999999999999999999999999;
$time_003 = intvalue(time() + ($n * 60));
echo $res_003 = date("Y-m-d H:i:s", $time_003);
function intvalue($value)
{
if($value > 2147483647) return 2147483647;
elseif($value < 0) return 0;
else return $value;
}
?>
|
Ошибки не будет!!! :))) | |
|
|
|
|
|
|
|
для: Евгений Петров
(18.03.2006 в 23:50)
| |
Fatal error: Call to undefined function: intvalue() in /home/ska.ru/WWW/admin.php on line 125
|
124 - $n = $HTTP_POST_VARS[frskminmolc];
125 - $time_003 = intvalue(time() + ($n * 60));
126 - $res_003 = date("Y-m-d H:i:s", $time_003);
127 -
128 - function intvalue($value){
129 - if($value > 2147483647) return 2147483647;
130 - elseif($value < 0) return 0;
131 - }
|
| |
|
|
|
|
|
|
|
для: FBI
(18.03.2006 в 23:56)
| | нужно поднять функцию наверх... | |
|
|
|
|
|
|
|
для: kasmanaft
(18.03.2006 в 23:57)
| | а.. ну да=) | |
|
|
|
|
|
|
|
для: Евгений Петров
(18.03.2006 в 23:50)
| | =)))) | |
|
|
|