[PHP] 日付操作のカンタンコード

2015年3月11日

PHP Tips プログラミング

そんなに難しいプログラムではないけれど、開発を急いで行う際には、あったら便利な、日付をコントロールするスニペット

コード

class DATE{ //-- yyyymmddhhmmss →配列に変換 // ※$flgは返値の方法 [0:配列 1:14桁] function str2hash($datetime){ $dt[y] = substr($datetime,0,4); //-- 年 $dt[m] = substr($datetime,4,2); //-- 月 $dt[d] = substr($datetime,6,2); //-- 日 $dt[h] = substr($datetime,8,2); //-- 時 $dt[i] = substr($datetime,10,2);//-- 分 $dt[s] = substr($datetime,12,2);//-- 秒 return $dt; } /** * yyyymmdd + days * param: $num:days(type=number) * return: yyyymmdd * error: return 0 */ function advance_days($date, $days=0){ if($date){ $dt=$this->str2hash($date,''); return date("Ymd",(mktime(0,0,0,$dt[m],$dt[d],$dt[y])+(24*60*60* $days)));//移動日算出 } //return 0; } /** * 2つのymdhisのUNIXタイム差分を求める * param @ $ymdhis1 : 対象日A [yyyymmdd] * param @ $ymdhis2 : 対象日B [yyyymmdd] * return @ n秒 */ function countDiff($ymdhis1,$ymdhis2){ //日付を配列フォーマットに変換 $d1 = $this->str2hash($ymdhis1); $d2 = $this->str2hash($ymdhis2); //差分を求める $diff = mktime($d2['h'],$d2['i'],$d2['s'],$d2['d'],$d2['m'],$d2['y']) - mktime($d1['h'],$d1['i'],$d1['s'],$d1['d'],$d1['m'],$d1['y']); return $diff; } /** * 基準日から◯日間の日付一覧を返す※countは整数値のみ有効 * param @ $date1 : 基準日 [yyyymmdd] * param @ $count : *日後(マイナスも可能) * return @ Array **/ function getDateRange($date1,$count){ //初期設定 $dates = array($date1); //2つの日付間の日数 for($i=1;$i<$count;$i++){ //対象日の取得 $dates[] = $this->advance_days($date1,$i); } return $dates; } /** * 2つの日付から、日数を求める * param @ $date1 [yyyymmdd] * param @ $date2 [yyyymmdd] * return @ n日間 */ function getDateCount($date1,$date2){ $d1 = array("y"=>substr($date1,0,4),"m"=>substr($date1,4,2),"d"=>substr($date1,6,2)); $d2 = array("y"=>substr($date2,0,4),"m"=>substr($date2,4,2),"d"=>substr($date2,6,2)); $mk1 = mktime(0,0,0,$d1['m'],$d1['d'],$d1['y']); $mk2 = mktime(0,0,0,$d2['m'],$d2['d'],$d2['y']); //差分を求める $diff = $mk2 - $mk1; return ($diff/(24*60*60))+1; } }