日時を扱うクラス

phpの時間は、タイムスタンプ(1970年1月1日9時0分0秒 からの通算秒)が基本となっていて、きっちり しているなぁ と感心するものの、視認しにくいし、一旦 視認しやすい文字列で表示した日付との連動性で、ヒーコラ してしまいます。
以下、まったく 個人的な都合で、視認しやすい文字列の 日付( 2009/7/23 9:0:5 みたいな)を引数にして、数値や 日付の文字列を返す関数のクラスです。
<?php

/**
 * 文字列の 日付 を引数として、文字列の 日付 もしくは 数値(タイムスタンプでは
* ない数値で返すクラス。mysql の条件式ではつかえるか?
*/
class JkDateTime{

	/**
	 * 現在日時を 2009/1/1 00:00:00 の形式の文字列で返す。
	 */
	public function now(){
		$d=getdate();
		$now=$d['year']."/".$d['mon']."/".$d['mday']." ".$d['hours'].":".$d['minutes'].":".$d['seconds'];
		return $now;
	}

	/*
	 * 日付配列から、日付文字列を返す。
	 */
	public function datetime($d){
		$d=$d['year']."/".$d['mon']."/".$d['mday']." ".$d['hours'].":".$d['minutes'].":".$d['seconds'];
		return $d;
	}

	public function year($date){
		$d=getdate(strtotime($date));
		return $d['year'];
	}

	public function month($date){
		$d=getdate(strtotime($date));
		return $d['mon'];
	}

	public function date($date){
		$d=getdate(strtotime($date));
		return $d['mday'];
	}

	public function hours($date){
		$d=getdate(strtotime($date));
		return $d['hours'];
	}

	public function minutes($date){
		$d=getdate(strtotime($date));
		return $d['minutes'];
	}

	public function seconds($date){
		$d=getdate(strtotime($date));
		return $d['seconds'];
	}

	public function dateadd($interval,$number,$date){
		$d=getdate(strtotime($number." ".$interval,strtotime($date)));
		return JkDateTime::datetime($d);
	}

	public function datediff($interval,$date1,$date2){
		$d1=getdate(strtotime($date1));
		$d2=getdate(strtotime($date2));

		//年より小さい月日時間の大小(1年内大小を決めます。)
		$dif_y_mon_day1=date("mdHis",strtotime($date1));	//ex. 0110201710	形式で月日時分秒表示
		$dif_y_mon_day2=date("mdHis",strtotime($date2));	//ex. 0111180307	形式で月日時分秒表示
		//月の差を出す。日時間秒を比較して(一月内の大小を決めます。)
		$dif_mon_day1=date("dHis",strtotime($date1));	//ex. 10201510	形式で日時分秒表示
		$dif_mon_day2=date("dHis",strtotime($date2));	//ex. 11182007	形式で日時分秒表示

		/*
		if($dif_y_mon_day1>$dif_y_mon_day2){
			if(strtotime($date2)>=strtotime($date1)){
				$add_year=-1;
			}else{
				$add_year=0;
			}
		}else{
			if(strtotime($date2)>=strtotime($date1)){
				$add_year=0;
			}else{
				$add_year=1;
			}
		}

		*/
		//年数の調整係数の演算。上記のものを三項演算式で書き換えたもの
		$add_year=(($dif_y_mon_day1>$dif_y_mon_day2) ? (0):(1))+((strtotime($date2)>=strtotime($date1)) ? (-1):(0));

		/*
		if($dif_mon_day1>$dif_mon_day2){
			if(strtotime($date2)>=strtotime($date1)){
				$add_month=-1;
			}else{
				$add_month=0;
			}
		}else{
			if(strtotime($date2)>=strtotime($date1)){
				$add_month=0;
			}else{
				$add_month=1;
			}
		}
		*/
		//月数の調整係数の演算。上記のものを三項演算式で書き換えたもの
		$add_month=(($dif_mon_day1>$dif_mon_day2) ? (0):(1))+((strtotime($date2)>=strtotime($date1)) ? (-1):(0));

		//年の差計算
		$dif['year']=$d2['year']-$d1['year']+$add_year;
		//月の差計算 年差異の加算
		$dif['mon']=$d2['mon']-$d1['mon']+$add_month+($d2['year']-$d1['year'])*12;
	     $dif['day']=intval((strtotime($date2)-strtotime($date2))/(24*60*60));
	     $dif['hours']=intval((strtotime($date2)-strtotime($date2))/(60*60));
	     $dif['minutes']=intval((strtotime($date2)-strtotime($date2))/(60));
	     $dif['seconds']=intval(strtotime($date2)-strtotime($date2));
	     return $dif[$interval];

	}


}



?>
ん? 関数が VBA っぽい?