2013-02-12 2 views
0

Я получаю ошибку mktime на моем сайте.Ошибка mktime в скрипте! Может кто-нибудь мне помочь?

Основной код из указываете ей в functions.php ниже:

function mkprettytime($s) { 
if ($s < 0) 
    $s = 0; 

$t = array(); 
$t["day"] = floor($s/86400); 
$s -= $t["day"] * 86400; 

$t["hour"] = floor($s/3600); 
$s -= $t["hour"] * 3600; 

$t["min"] = floor($s/60); 
$s -= $t["min"] * 60; 

$t["sec"] = $s; 

if ($t["day"]) 
    return $t["day"] . "d " . sprintf("%02d:%02d:%02d", $t["hour"], $t["min"],  $t["sec"]); 
if ($t["hour"]) 
    return sprintf("%d:%02d:%02d", $t["hour"], $t["min"], $t["sec"]); 
    return sprintf("%d:%02d", $t["min"], $t["sec"]); 
} 

function sql_timestamp_to_unix_timestamp($s){ 
return mktime(substr($s, 11, 2), substr($s, 14, 2), substr($s, 17, 2), substr($s,  5, 2), substr($s, 8, 2), substr($s, 0, 4)); 
} 

И ошибка:

[12-Feb-2013 11:06:36] PHP Warning: mktime() expects parameter 4 to be long, string given in /home/myweb/public_html/bgcode/functions.php on line 543 

И 543 линия (от выше линии/сценария)

return mktime(substr($s, 11, 2), substr($s, 14, 2), substr($s, 17, 2), substr($s, 5, 2), substr($s, 8, 2), substr($s, 0, 4)); 

ответ

1

Поскольку все значения, которые вы передаете, являются строками, а четвертый должен быть числом, вам нужно подсчитать до четвертого и убедитесь, что это число. Если ваши субстраты выполнены правильно (я не проверял), будет просто преобразовать это значение в число перед его передачей. Первое, что нужно сделать, это дважды проверить, что то, что вы передаете как параметр 4, - это то, что вы думаете. Тогда читайте на intval(): http://php.net/manual/en/function.intval.php

Изменить, чтобы добавить: Еще через минуту раздумья, я сомневаюсь, что вы когда-нибудь понадобится функция, как, что (если вы используете MySQL, см UNIX_TIMESTAMP()), и даже если вы сделал, strtotime(), вероятно, сделает тяжелый подъем для вас.

+0

Хорошо, я проверю – on9cinema

1

На самом деле, я думаю, что вы ищете функции StrToTime, не указываете ей:

http://www.php.net/manual/en/function.strtotime.php

Тогда вы можете просто позвонить StrToTime вместо того, чтобы свою собственную функцию sql_timestamp_to_unix_timestamp, если вы не хотите, чтобы справиться с недействительным значения, отличные от strtotime.

+0

О, да, я тоже могу использовать strtotime .. Спасибо – on9cinema

Смежные вопросы