[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; } }

このブログを検索

ごあいさつ

このWebサイトは、独自思考で我が道を行くユゲタの少し尖った思考のTechブログです。 毎日興味がどんどん切り替わるので、テーマはマルチになっています。 もしかしたらアイデアに困っている人の助けになるかもしれません。