1

データベースにいくつかの空白のDATETIME値(0000-00-00 00:00:00)があります。

これらをstrtotimeで実行すると、FALSEではなく「1263247058」が返されます。これは、リンクされたページの情報に従って実行する必要があります。

PHP strtotime()は何も出力しません

どうして?

ありがとう。

4

5 に答える 5

3

のドキュメントstrtotimeのコメントの1つにあるように、「によって返される値はstrtotime("0000-00-00")PHPのバージョンによって異なります」。したがって、その特定の値について追加のチェックを行うことをお勧めします。

于 2010-01-12T15:10:46.883 に答える
1

どうして来るのかは他の答えで説明されています。このコードは、値をfalseに強制します。

if ($db_datetime == 0) {
    $unix_timestamp = false;
} else {
    $unix_timestamp = strtotime($db_datetime);
}
于 2010-01-12T15:31:54.267 に答える
1

多くのPHP関数は、内部で標準Cライブラリの実装に依存しており、これはstrtotime()の場合である可能性があります。つまり、正確な動作は、PHPが実行されているオペレーティングシステムによって異なります。

無効な日付を検出するためにstrtotime()に依存しない方が良いと思います。

ちなみに...あなたはMySQLを使用していると思います。無効な日付を受け入れないように構成することができます。

NO_ZERO_DATE

于 2010-01-12T15:35:30.827 に答える
0

私のために働く:\

$ php -r 'var_dump(strtotime("0000-00-00 00:00:00"));'
bool(false)
$

MacOSではPHP5.2.8、CentOS5.2ではPHP5.2.5。同じテストを試すことができますか?結果が異なる場合は、どのバージョンのPHPを使用していて、どのプラットフォームを使用していますか?

FWIW、ゼロ日付の代わりに実際のNULLをデータベースに格納することで、この状況全体を完全に回避できると思います。

于 2010-01-12T15:09:35.887 に答える
0

次のコード(PHPバージョン5.3.0)の出力を検討してください。

echo date( "h:i:sa m/d/Y", strtotime( '00:00:00' ) ) . "<br/>" ;
echo date( "h:i:sa m/d/Y", strtotime( '00:00:00 00-00-0000' ) ). "<br/>"  ;

// Output
12:00:00am 01/12/2010
12:00:00am 01/01/1970
于 2010-01-12T15:30:26.937 に答える