ホームページ >バックエンド開発 >PHPの問題 >PHPを使用して時刻文字列をタイムスタンプに変換する方法

PHPを使用して時刻文字列をタイムスタンプに変換する方法

PHPz
PHPzオリジナル
2023-03-29 16:16:391099ブラウズ

PHP は、豊富な関数ライブラリと便利で使いやすい日付と時刻のクラスを備えた人気の Web プログラミング言語です。 PHP アプリケーションでは、多くの場合、後続の計算と比較のためにタイムスタンプを取得するために時刻文字列を処理する必要があります。この記事では、時刻文字列をタイムスタンプに変換する方法を紹介します。

1. strtotime 関数

strtotime 関数は、PHP の組み込みの日付と時刻の処理関数で、一般的な日付と時刻の文字列を Unix タイムスタンプに変換できます。例:

echo strtotime('2022-03-01 12:00:00'); // 1646083200

この関数は非常に便利で、一般的に使用される「年-月-日 時:分:秒」形式の文字列をタイムスタンプに直接変換できます。同時に、strtotime 関数は相対時間形式もサポートします。たとえば、「明日」や「来週の月曜日」などの文字列を入力すると、対応するタイムスタンプを取得できます。

echo strtotime('tomorrow'); // 明天此时时间的时间戳
echo strtotime('next Monday'); // 下个星期一此时时间的时间戳

ただし、strtotime 関数にはいくつかの制限もあります。まず、一部の非標準の日付/時刻形式を処理できません。例:

echo strtotime('2022年3月1日 12:00:00'); // false

この文字列は日付と時刻も表しますが、strtotime 関数はこれを解析できません。次に、strtotime 関数は、より複雑な時刻形式に対して誤った結果を得る可能性があります。たとえば、タイム ゾーン情報を含まない一部の文字列の場合、strtotime 関数はデフォルトで現在のタイム ゾーンを解析に使用するため、誤った結果が生成される可能性があります。

2. DateTime クラス

DateTime クラスは、PHP によって提供される日付と時刻のオブジェクトであり、日付と時刻の書式設定、タイム ゾーンの変換など、日付と時刻を処理するための豊富なメソッドを提供します。 、など待ってください。時刻文字列を処理するときに DateTime クラスを使用すると、正しいタイムスタンプを確実に取得できます。

$date = new DateTime('2022-03-01 12:00:00');
echo $date->getTimestamp(); // 1646083200

DateTime クラスは、さまざまな日付と時刻の文字列形式を受け入れることができ、処理方法は非常に柔軟で、さまざまな形式を自動的に認識して変換できます。

getTimestamp メソッドに加えて、DateTime クラスには、日付と時刻の文字列をさまざまな形式で出力したり、日付と時刻に関する加算、減算、比較、およびその他の操作を実行したりするための他の多くのメソッドも提供されます。

$date = new DateTime('2022-03-01 12:00:00');
echo $date->format('Y-m-d H:i:s'); // '2022-03-01 12:00:00'
$date->add(new DateInterval('P2D')); // 添加2天
echo $date->format('Y-m-d H:i:s'); // '2022-03-03 12:00:00'
echo ($date > new DateTime('now')); // true

概要

strtotime 関数を使用しても DateTime クラスを使用しても、時刻文字列をタイムスタンプに変換できます。より単純な時刻形式の場合は、非常に便利な strtotime 関数を使用することをお勧めします。ただし、より複雑な日付形式を処理する必要がある場合は、より高い解析精度を得るために DateTime クラスを使用することをお勧めします。

以上がPHPを使用して時刻文字列をタイムスタンプに変換する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。