ホームページ  >  記事  >  バックエンド開発  >  PHP で時刻形式を処理する場合、予期しない結果を避けるにはどうすればよいでしょうか?

PHP で時刻形式を処理する場合、予期しない結果を避けるにはどうすればよいでしょうか?

Patricia Arquette
Patricia Arquetteオリジナル
2024-10-18 12:02:031044ブラウズ

When Handling Time Formats in PHP, How Can We Avoid Unexpected Results?

PHP での時間操作: H:i から 30 分の加算と減算

PHP では、時間関連のタスクを処理することがさまざまな用途で重要です。アプリケーション。一般的なシナリオの 1 つは、「H:i」としてフォーマットされた時間値を変更することです。この形式は、「10:00」や「13:30」など、時間を時と分で表します。

そのような値から特定の時間間隔を加算または減算するには、strtotime() および date( ) 機能。ただし、初期時刻値がタイムスタンプとして適切にフォーマットされていない場合、予期しない動作が発生する可能性があります。

2 つの新しい値を作成する例を考えてみましょう: $startTime $time 30 分前と $endTime 30 $time の数分後。ここで、$time の形式は「H:i」です。

以下のコード スニペットは、最初は合理的であるように思われるかもしれません:

<code class="php">$startTime = date("H:i",strtotime('-30 minutes',$time));
$endTime = date("H:i",strtotime('+30 minutes',$time));</code>

しかし、「10:00」を過ぎると$time として指定すると、予期しない結果が発生します。$startTime は意図した「09:30」ではなく「00:30」になり、$endTime は「10:30」ではなく「01:30」になります。

重要な問題は、$time がタイムスタンプであるという最初の仮定にあります。ただし、これは単に「H:i」としてフォーマットされた文字列です。これを解決するには、まず strtotime() 関数を使用して $time をタイムスタンプに変換する必要があります。

修正されたコード:

<code class="php">$time = strtotime('10:00');
$startTime = date("H:i", strtotime('-30 minutes', $time));
$endTime = date("H:i", strtotime('+30 minutes', $time));</code>

これで、結果は期待どおりになります: $startTimeは「09:30」、$endTimeは「10:30」になります。 $time が最初からタイムスタンプであることを保証することで、PHP で正確な時刻操作を実行できます。

以上がPHP で時刻形式を処理する場合、予期しない結果を避けるにはどうすればよいでしょうか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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