注目の書籍

好評発売中!

IT業界徹底研究就職ガイド2013年版

IT/ネット業界で働くと いうことを分かりやす く解説。2013年3月卒 業の学生向けの1冊。

必聴講座ご紹介

Cloud Days Tokyo 2012
クラウド時代を勝ち抜く企業戦略を考える

エムオーテックス


Cloud Days Tokyo 2012
クラウド時代の企業インフラとユーザー環境の姿

ヴイエムウェア


Cloud Days Osaka 2012
クラウドでIT維新を〜ビジネスを加速させるベストプラクティス

アマゾン データ サービス ジャパン

オープンソース/Linux

PHP TIPS

ITpro

6. strtotimeの落とし穴

2007/02/01

strtotime関数はGNU Date Input Formats形式に準拠した文字列をタイムスタン プ形式に変えるためのものです。使用方法として、ある時点から何年前、何ヶ月 後、何日前などの日付を計算するためなどに使用できます。月末に実行されるス クリプト内に、strtotime関数を使用していると思わぬ落とし穴にはまることが あるので注意しましょう。

月末に以下のように先月の日付文字列を取得するコードを記述したとします。

$next_month = date('Y-m', strtotime('-1 month'));

このコードは3,5,7,10,12月の月末に実行すると、そのまま3,5,7,10,12月が返っ てきてしまいます。これはなぜかというと、3月31日という日付から一ヶ月前を 計算しようとしたときに、2月31日が存在せず、3月3日という日付が返ってきて しまうのが原因のようです。

なので、翌月、先月、何ヶ月前などの計算を行う場合は、mktime関数を使用して 一つ一つ指定することになるでしょう。とはいっても、3月31日の一ヶ月前は明 確に「これだ!」といえる定義があるわけではないと思いますが。。

それと、これはTipsとはいえませんが、PHP 5から追加された日付関数で date_sunrise、date_sunsetという日の出、日の入時刻を計算する関数を発見し てしまいました。この関数は使われるのでしょうか。。

strtotime
http://jp2.php.net/strtotime
date_sunrise
http://jp2.php.net/date_sunrise
date_sunset
http://jp2.php.net/date_sunset


(アシアル 森川穣)


この記事は、アシアルが運営するPHP開発者のためのポータル&コミュニティサイト「PHPプロ!」で毎週配信しているPHP・TIPSメーリングリストを再録したものです。
同サイトでは、他にもPHP最新ニュースや、困ったときのQ&A掲示板、初心者向けのPHP講座など、PHP開発者をサポートする情報を掲載しています。

この記事に対するfacebookコメント

nikkeibpITpro

読みましたか? 〜 未読記事をご紹介