7章日付と時刻

 PHPで開発していると、データベースにタイムスタンプを追加したり、2つの日付の差を計算するなど、日付と時刻を扱う場面がよくあります。PHPでは、日付と時刻の情報が同時に扱えるDateTimeクラスと、これと連携して動作するDateTimeZoneクラスが提供されています。

 近年、ウェブポータルやFacebook、Twitterなどのソーシャルコミュニティの普及に伴い、タイムゾーン管理の重要性はますます高まっています。ウェブサイトに投稿した人が世界のどこから投稿したかを、同じサイトにいる他の人にわかるようにするのは、今では必須要件です。しかし、date()関数などがデフォルト情報を取得するのはそのスクリプトを実行しているサーバーからで、実は、投稿者自身が自分の居場所を言わない限り、投稿者がどのタイムゾーンにいるのか自動的に特定するのは非常に難しいことなのです。とはいえ、情報さえわかれば、データの操作は簡単です(タイムゾーンについては、本章の後半で詳しく説明します)。

ヒントや提案あるいは一般的な注意
以前からある日付(と日付に関係する)関数には、WindowsといくつかのUnix系の環境で、計時に関する欠陥があります。これらの関数では、日付と時刻のデータ管理に使用される32ビット符号付き整数の性質により、1901年12月13日より前の日付や2038年1月19日より後の日付が扱えません。したがって、今後の精度を高めるためにも、より新しいDateTimeクラスファミリーを使うようにしましょう。

Get プログラミングPHP 第4版 now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.