PDA

Просмотр полной версии : Php по утрам


(- Goo -) [sublimit]
14.04.2004, 09:08
Встал сегодня рано утром, и сел за написание скрипта вычесляющего разницу в днях между двумя датами: Сегодняшним днём, и 19 Мая, 2005ого года.

<? //


$premiere=mktime(0,0,0,19,5,2005);
$today=date("0,0,0,j,n,Y");
$today=mktime($today);

$difference=$premiere-$today;
$difference=$difference/60/60/24;
$difference=(int)$difference;

print($difference);


// ?>

Когда я его затестил, скрипт вернул мне 810 дней, тоесть в два раза больше чем надо. Тогда я понял что ошибка вот в этой строке

$difference=$premiere-$today;
$difference=$difference/60/60/24;
Разницу между результатами mkdate двух дат, нужно преобразовать в минуты разделив на 60, потом преобразовать минуты в часы, разделив еще на 60 и в конце концов просто разделить часы на 24 при этом получив количество дней!

Но в рабочем варианте почему-то приходится делить на 2 :)
Тоесть выглядит он вот так:

$difference=$difference/60/60/24/2;


Вот одной вещи я НЕ понимаю, ЗАЧЕМ делить на 2 или почему результат моих вычеслений в два раза больше? :D

juggy
14.04.2004, 11:03
Это лучше всего делать с Mysql. Одной строчкой.
Оно всё посчитает:-)

Constantine
14.04.2004, 11:37
На самом деле, это даже не в 2 раза больше, ты просто считаешь вообще непонятно что ;)
Вот это работает:

$premiere=mktime(0,0,0,5,19,2005);
$today=mktime(0,0,0,date("m"),date("d"),date("Y"));
$difference=round(($premiere-$today)/60/60/24);
print($difference);

А дело в том, что...
int mktime ( [int hour [, int minute [, int second [, int month [, int day [, int year [, int is_dst]]]]]]] )
Warning: Note the strange order of arguments, which differs from the order of arguments in a regular UNIX mktime() call and which does not lend itself well to leaving out parameters from right to left (see below). It is a common error to mix these values up in a script.

Другими словами, сначала месяц, потом день ...

ninja_127
14.04.2004, 11:39
Оригинал написал(а) juggy
Это лучше всего делать с Mysql. Одной строчкой.
Оно всё посчитает:-)
точняга, мэн!