0

Web サイトで継続的な mktime エラーが発生します。

functions.php の主な mktime コードは次のとおりです。

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));
4

2 に答える 2

1

渡す値はすべて文字列であり、4 番目の値は数値である必要があるため、4 番目のパラメーターまで数えて、それが数値であることを確認する必要があります。substr が正しく設定されていれば (私は確認しませんでした)、値を渡す前にその値を数値に変換するのは簡単なことです。最初に行うことは、パラメーター 4 として渡すものが、あなたが考えているものであることを再確認することです。次に読んでくださいintval()http://php.net/manual/en/function.intval.php

追加する編集:さらに1分間熟考した後、そのような関数が必要になることはあるのではないかと疑問に思います(MySQLを使用している場合は、UNIX_TIMESTAMP()を参照してください)。たとえそうであったとしても、おそらくstrtotime()が面倒な作業を行うでしょう。あなたのために。

于 2013-02-12T06:04:52.497 に答える
1

実際には、mktime ではなく strtotime 関数を探していると思います。

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

その後、独自の sql_timestamp_to_unix_timestamp 関数を作成する代わりに、strtotime を呼び出すことができます。

于 2013-02-12T06:09:38.617 に答える