PHPの日付クラス

提供:wiki - PCスキルの小技・忘却防止メモ
移動: 案内, 検索

PHPの日付クラス。PHPで日付関連のクラス(月末の取得等)

ソース

DBとの絡みが発生するときに使う頻度が多くなりそうと思ったけどPHPだとこんなクラスなくとも無問題…。

まぁ、他の言語でやるときにとりあえず作っといたほうが良さげな内容。

class DateClass {
	/**
	 * 0分0秒を取得する
	 * @param type $dateStr
	 * @return type
	 */
	public function BeginOfHour($dateStr) {
		return date("Y-m-d h:00:00", strtotime($dateStr));
	}
	
	/**
	 * 59分59秒を取得
	 * @param type $dateStr
	 * @return type
	 */
	public function EndOfHour($dateStr) {
		return date("Y-m-d h:59:59", strtotime($dateStr));
	}
	
	/**
	 * 0時0分0秒を取得(指定日の最初)
	 * @param type $dateStr
	 * @return type
	 */
	public function BeginOfDay($dateStr) {
		return date("Y-m-d 00:00:00", strtotime($dateStr));
	}
	
	/**
	 * 23時59分59秒を取得(指定日の終わり)
	 * @param type $dateStr
	 * @return type
	 */
	public function EndOfDay($dateStr) {
		return date("Y-m-d 23:59:59", strtotime($dateStr));
	}
	
	/**
	 * 1日0時0分0秒を取得(月初め)
	 * @param type $dateStr
	 * @param type $format
	 * @return type
	 */
	public function BeginOfMonth($dateStr, $format="Y-m-d") {
		$time = " 00:00:00";
		switch ($format){
			case 'Y-m-d':
				$time = "";
				break;
			default:
				$time = " 00:00:00";
				break;
		}
		return date("Y-m-01" . $time, strtotime($dateStr));
	}
	
	/**
	 * 末日23時59分59秒999ミリ秒を取得(月末)
	 * @param type $dateStr
	 * @param type $format
	 * @return type
	 */
	public function EndOfMonth($dateStr, $format="Y-m-d") {
		$time = " 23:59:59";
		switch ($format){
			case 'Y-m-d':
				$time = "";
				break;
			default:
				$time = " 23:59:59";
				break;
		}
		return date("Y-m-t" . $time, strtotime($dateStr));
	}
}

使い方

$date = new DateClass();

// 今月の1日(書式:Y-m-d)
echo $date->BeginOfMonth(date("Y-m-d")) ."<br />";

// 今月の月末の日(書式:Y-m-d)
echo $date->EndOfMonth(date("Y-m-d")) ."<br />";

// 今月の1日の最初(書式:Y-m-d h:i:s)※第二引数になにか入れればok
echo $date->BeginOfMonth(date("Y-m-d"), "his") ."<br />";

// 指定した日(2013-04-05)の月初め(書式:Y-m-d)
echo $date->EndOfMonth("2013-04-05") ."<br />";

// 指定した日(2012-02-13)の月末(書式:Y-m-d)
echo $date->EndOfMonth("2012-02-13") ."<br />";

月末が欲しくて、時間表示も不要なら普通にdate()で、書式を「Y-m-t」にすればok。

関連項目