7

PHP はstrtotime()、指定された入力が有効な時間を表す文字列であると想定しています。を使用する前strtotime()に、渡される文字列が有効な形式のいずれかであることを確認するにはどうすればよいですか?

4

2 に答える 2

12

strtotime()日付形式を理解できない場合は false を返すため、戻り値を確認できます。この関数には副作用がないため、呼び出そうとしても問題はありません。

// $format = ...

if (($timestamp = strtotime($format)) !== false) {
    // Obtained a valid $timestamp; $format is valid
} else {
    // $format is invalid
}

strtotime()ただし、サーバー アーキテクチャと同じ範囲の Unix タイムスタンプしかサポートしていないことに注意してください。これは、特定の日付範囲に対して誤って false を返すことを意味します。マニュアルから:

:

タイムスタンプの有効な範囲は通常、1901 年 12 月 13 日金曜日 20:45:54 UTC から 2038 年 1 月 19 日火曜日 03:14:07 UTC までです。(これらは、32 ビット符号付き整数の最小値と最大値に対応する日付です。) さらに、すべてのプラットフォームが負のタイムスタンプをサポートしているわけではないため、日付範囲が Unix エポックより前に制限される場合があります。これは、たとえば、1970 年 1 月 1 日より前の日付は、Windows、一部の Linux ディストリビューション、およびその他のいくつかのオペレーティング システムでは機能しないことを意味します。ただし、PHP 5.1.0 以降のバージョンでは、この制限が解消されています。

PHP の 64 ビット バージョンの場合、タイムスタンプの有効な範囲は事実上無限です。64 ビットはどちらの方向にも約 2930 億年を表すことができるからです。

サーバー アーキテクチャはさまざまであるため、ユース ケースによっては 32 ビットの Unix タイムスタンプに制限される場合がありますが、64 ビットのタイムスタンプは実質的に無限の期間をカバーします。

于 2011-02-11T09:05:25.563 に答える
3

実際には、関数を実行する前にそれを確認することはできませんが、公式の php.net ページを見ることができます。できることは、関数が「false」を返すかどうかを確認することだけです。

ここにリンクstrtotime()があります。

strtotime() でできることの例はたくさんあります。

于 2011-02-11T09:05:44.017 に答える