概要
データベースから当日分と当月分のデータを取ってくる処理で
日付で条件絞る時に便利だったDateTimeクラスを実際に実装した流れに乗せて紹介します。
ちなみにデータベースで登録している日付はUNIXTIMEです。
リンク
ソースコード
まずは当日の日付を取得します。
// ソースコード実行時の日付を取得したい場合
$datetime = new DateTime();
// 日付を指定したい場合
$datetime = new DateTime('2017-06-16');
当日分の検索をするためには
一日の始まりの時(00:00:00)と終わりの時間(23:59:59)を条件に入れないといけないので
そのデータを取得していきます。
// 始まりの時間を取得していきます
$datetime->setTime(00, 00, 00); // 00:00:00と日付に時間だけをセットする
$startOfDayUnixtime = $datetime->format('U'); // 日付をUNIXTIME形式にして渡す
// 終わりの時間を取得していきます
$datetime->setTime(23, 59, 59); // 23:59:59と日付に時間だけをセットする
$endOfDayUnixtime = $datetime->format('U'); // 日付をUNIXTIME形式にして渡す
あとはデータベースの検索条件に始まりの時間と終わりの時間を渡し
その間のデータを取ってきてもらうだけですね!
こんな感じで、当月分のデータも取得します。
// 月の始まりの時間を取得していきます
$datetime->modify('first day of this months'); // 当月の1日を日付をセットする 6月だったら06/01
$datetime->setTime(00, 00, 00); // 00:00:00と日付に時間だけをセットする
$startOfMonthUnixtime = $datetime->format('U'); // 日付をUNIXTIME形式にして渡す
// 月の終わりの時間を取得していきます
$datetime->modify('last day of this months'); // 当月の最終日を日付をセットする 6月だったら06/30
$datetime->setTime(23, 59, 59); // 23:59:59と日付に時間だけをセットする
$endOfMonthUnixtime = $datetime->format('U'); // 日付をUNIXTIME形式にして渡す
あとはデータベースに条件として時間を渡すだけなので簡単ですね~
おまけ
$datetime->modify()がすごく便利で日付計算が簡単に出来ます
$datetime->modify('+1 days'); // 1日分足す
$datetime->modify('+1 days'); // 1日分引く
$datetime->modify('+1 weeks'); // 1週間分足す
$datetime->modify('+1 months + 5 days'); // 1ヶ月と5日分足す
$datetime->modify('first day of this months'); // 当月1日
$datetime->modify('last day of this months'); // 当月末尾