strtotime()
入力文字列を UNIX タイムスタンプに変換します。入力文字列にタイムゾーン情報がない場合、PHP はどのタイムゾーンを意味するかを推測する必要があります。実際には推測しません...デフォルトのタイムゾーンを調べます。
UNIX タイムスタンプは、1970 年 1 月 1 日 UTC からの秒数です。したがって、これを行う場合:
echo strtotime('1970-01-01 00:00:00');
// depends on your default time zone
あなたはゼロを期待するかもしれません。ただし、文字列でタイムゾーンを指定していないため、デフォルトのタイムゾーンが使用されます。実際の出力は異なります。
date_default_timezone_set('UTC');
echo strtotime('1970-01-01 00:00:00');
// always 0
これでゼロになります。または、あいまいさを取り除くことができます。
echo strtotime('1970-01-01 00:00:00 UTC');
// always 0
同様に、 を使用するdate()
と、PHP は時刻を表示するときにデフォルトのタイムゾーンを適用します。
質問のコードは、実際にはエラーの場所を示していません。したがって、PHP がタイム スタンプとタイム ゾーンをどのように処理するかを理解していないことを除けば、問題が何であるかを実際に伝えることはできません。
タイムスタンプが正しい場合はdate_default_timezone_set()
、タイムゾーンを設定するために を使用する必要があります。これは、 への今後のすべての呼び出しに影響しますdate()
。
DateTime
また、1970 年からの秒数を数えるよりも簡単なクラスの使用に興味があるかもしれません。