php获取指定日期之间的各个周和月的起止时间

前端之家收集整理的这篇文章主要介绍了php获取指定日期之间的各个周和月的起止时间前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

根据指定的前后两个日期,计算这两个日期之间各个周的起始时间和结束时间,以及各个月的起始时间和结束时间

日志格式化类 Date.class.PHP

代码如下:
strftime('%Y-%m-%d',strtotime($date) - $mon_idx * 86400), 'week_end_day' => strftime('%Y-%m-%d',strtotime($date) - $sun_idx * 86400), ); } /** * 根据指定日期获取所在月的起始时间和结束时间 */ public function get_monthinfo_by_date($date){ $ret = array(); $timestamp = strtotime($date); $mdays = date('t',$timestamp); return array( 'month_start_day' => date('Y-m-1',$timestamp), 'month_end_day' => date('Y-m-'.$mdays,$timestamp) ); } /** * 获取指定日期之间的各个周 */ public function get_weeks($sdate,$edate) { $range_arr = array(); // 检查日期有效性 $this->check_date(array($sdate,$edate)); // 计算各个周的起始时间 do { $weekinfo = $this->get_weekinfo_by_date($sdate); $end_day = $weekinfo['week_end_day']; $start = $this->substr_date($weekinfo['week_start_day']); $end = $this->substr_date($weekinfo['week_end_day']); $range = "{$start} ~ {$end}"; $range_arr[] = $range; $sdate = date('Y-m-d',strtotime($sdate)+7*86400); }while($end_day < $edate); return $range_arr; } /** * 获取指定日期之间的各个月 */ public function get_months($sdate,$edate) { $range_arr = array(); do { $monthinfo = $this->get_monthinfo_by_date($sdate); $end_day = $monthinfo['month_end_day']; $start = $this->substr_date($monthinfo['month_start_day']); $end = $this->substr_date($monthinfo['month_end_day']); $range = "{$start} ~ {$end}"; $range_arr[] = $range; $sdate = date('Y-m-d',strtotime($sdate.'+1 month')); }while($end_day < $edate); return $range_arr; } /** * 截取日期中的月份和日 * @param string $date * @return string $date */ public function substr_date($date) { if ( ! $date) return FALSE; return date('m-d',strtotime($date)); } /** * 检查日期的有效性 YYYY-mm-dd * @param array $date_arr * @return boolean */ public function check_date($date_arr) { $invalid_date_arr = array(); foreach ($date_arr as $row) { $timestamp = strtotime($row); $standard = date('Y-m-d',$timestamp); if ($standard != $row) $invalid_date_arr[] = $row; } if ( ! empty($invalid_date_arr)) { die("invalid date -> ".print_r($invalid_date_arr,TRUE)); } } }

文件的使用

代码如下:
get_weeks('2014-11-05','2014-11-29')); /*结果为 array(4) { [0]=> string(13) "11-03 ~ 11-09" [1]=> string(13) "11-10 ~ 11-16" [2]=> string(13) "11-17 ~ 11-23" [3]=> string(13) "11-24 ~ 11-30" } */ // 输出2月1日和11月30日 var_dump($datefmt->get_months('2014-02-03','2014-11-29')); /*结果为 array(10) { [0]=> string(13) "02-01 ~ 02-28" [1]=> string(13) "03-01 ~ 03-31" [2]=> string(13) "04-01 ~ 04-30" [3]=> string(13) "05-01 ~ 05-31" [4]=> string(13) "06-01 ~ 06-30" [5]=> string(13) "07-01 ~ 07-31" [6]=> string(13) "08-01 ~ 08-31" [7]=> string(13) "09-01 ~ 09-30" [8]=> string(13) "10-01 ~ 10-31" [9]=> string(13) "11-01 ~ 11-30" } */

原文链接:https://www.f2er.com/php/23293.html

猜你在找的PHP相关文章