私は以前の日付を送信し、それよりも早い日付と今日の間の期間を数十日短縮します。私は正確に以下のようになるように結果を必要14/01/2016datetime:月を10日間に分割
と
例:
- 2016年1月11日2016年1月20から
- 2016年1月21日2016年1月31日
- 01年2月20日~2010年2月10日
- 2016年2月11日2016年3月31に2016年3月
- 2016年3月21日20 2016年3月
- 2016年3月11日〜10 2016年2月
- 2016年3月1日〜29 2016年2月
- 2016年2月21日〜20
2016年4月10日に- 2016年4月1日に
- 2016年4月11日〜20 2016年4月
ここに私のコード:
function date_interval($startTime = false){ if(! $startTime){ return array(); } else { if(date('d',$startTime) < 10){ $actual = mktime(0, 0, 0, date('m',$startTime), 1, date('Y',$startTime)); } elseif(date('d',$startTime) < 20){ $actual = mktime(0, 0, 0, date('m',$startTime), 10, date('Y',$startTime)); } else { $actual = mktime(0, 0, 0, date('m',$startTime), 20, date('Y',$startTime)); } if(date('d',time()) < 10) { $target = mktime(0, 0, 0, date('m',time()), 10, date('Y',time())); } elseif(date('d',time()) < 20) { $target = mktime(0, 0, 0, date('m',time()), 20, date('Y',time())); } else { $target = mktime(0, 0, 0, date('m',time())+1, 1, date('Y',time())); } $current = $actual; $last = $actual; while($current < $target) { if(date('d',$current) < 10){ $current = mktime(0, 0, 0, date('m',$current), 10, date('Y',$current)); } elseif(date('d',$current) < 20){ $current = mktime(0, 0, 0, date('m',$current), 20, date('Y',$current)); } else { $current = mktime(0, 0, 0, date('m',$current)+1, 1, date('Y',$current)); } $dateTime[date("Y-m-d", $last) .'~'. date("Y-m-d", $current)] = date('d M Y',$last) . ' - ' . date('d M Y',$current)); $last = $current; } } return $dateTime; }
このようにすることを嫌う必要があります。次回は 'DateTime()'を使います。 *ずっと簡単。 –