2009-08-03 8 views
4

を出力していない私のPHPコードです:PHPののstrtotime()はここでは何も

echo '<br />1. '.$w_time_no; 
echo '<br />2. '.strtotime($w_time_no); 
echo '<br />3. '.date('G:i', strtotime($w_time_no)); 

私が得る何が:

1. 0000-00-00 22:00:00 
2. 
3. 2:00 

のstrtotime()は、それ自体では何も出力しないのはなぜ?サーバーの設定に問題がありますか?サーバー:Apache/2.2.11(Win32)、PHP 5.2.10、MySQLクライアントバージョン:5.0.51a。

答えて

10

strtotime何も出力しない、btw:エラーの場合はfalseを返します。 manualを参照してください。

リターンは、成功したタイムスタンプを返します

、FALSE それ以外の値。 PHP 5.1.0より前では、この 関数は失敗した場合-1を返します。何も出力されないもの

echoです:falseは、空の文字列とみなされ、そして何もoutputedなかっます。

注: は金、典型的には、タイムスタンプの有効範囲、12月13日(火)に1901 午前20時45分54秒UTC、2038年1月19日

のstrtotimeのドキュメントも、日付の有効範囲を提供します 03:14:07 UTC。 (これらは、32ビットの最小値に対応する日付 と 最大値は 符号付き整数である。)また、全て プラットフォームが負のタイムスタンプをサポートしていない、 従ってあなたの日付範囲は、Unixよりない以前に制限 であってもよいです エポック。これは例えば1970年1月1日より前の日付 は、 Windows、一部のLinuxディストリビューション、および いくつかの他のオペレーティングシステムでは動作しません。 PHP 5.1.0以降ではこの制限を克服しています。

'0000-00-00'はこの範囲外です。有効な日付ではありません。したがって、戻り値はfalseです。


変数の内部に何が入っているかを知るには、var_dumpを使用できます。
Xdebugと一緒に使用されるbnusとして、整形された出力が得られます;-)

+1

var_dump()を使って変数が実際に何であるかを調べるには+1。 –

+0

多くの開発者がこの関数が 'PHP'に存在することさえ知らないので、' var_dump'の使用をお勧めします。 – NullPointer

7

0000-00-00は有効な日付ではありません。

date()は入力時間を0と解釈し、サーバーのタイムゾーンを補正するため、出力します。私はdate('Y-m-d H:i', strtotime(...))が与えるだろうと確信しています。1970-01-01 2:00

+1

'strtotime'関数をさらに詳しく説明すると、boolean falseが返されます。その結果を 'var_dump'してみてください。 'strtotime'に適切な文字列を指定する必要があります。 – MitMaro

-1

time()に間違えていると思います。

strtotimeは文字通り文字列ですが、時刻に変換するには文字列が必要です。

成功した場合はタイムスタンプを返します。それ以外の場合はFALSEです。 PHP 5.1.0より前のバージョンでは、この関数は失敗すると-1を返します。

したがって、この時間文字列の検証に失敗しています。