strtotime の奇妙な動作 - サインインオフセット

ジテンドラプロヒト

以下の行から -

$date = strtotime('-' . (-100) . ' years');

4654765319ローカル コードでこれを試すと、値が得られます。同ラインは、の値を与える$dateNULL、ライブサイトにしようとしたとき。この行には変数が含まれていないため、他のコードが影響を与えることはありません。

マイナス記号を削除すると、ローカルとライブの両方で正しい値が得られます -ie

$date = strtotime('-' . (100) . ' years');

-1656664323どちらの場合でも同じ出力が得られます。

シンボルをstrtotime()使用して2つのプラットフォームで動作が異なる理由を誰かが理解できます-か?

ありがとう。

ジョージ

おそらく、あなたは 32 ビット バージョンの PHP を実行しています。PHP ドキュメントからの注意:

タイムスタンプの有効な範囲は通常、1901 年 12 月 13 日金曜日 20:45:54 UTC から 2038 年 1 月 19 日火曜日 03:14:07 UTC です。(これらは、32 ビット符号付き整数の最小値と最大値に対応する日付です。)

代わりに、PHP のDateTimeクラスを使用できます

$date = new DateTime();
$date->modify('-' . (-100) . ' years');

echo $date->format('U');

eval.in

これが問題の明確な再現です。

eval.in

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事