php获取指定日期之间的各个周和月的起止时间
2015-01-24信息快讯网
本文推荐给大家一个php类文件,可以根据指定日期获取所在周的起始时间和结束时间,并附上使用实例,有需要的小伙伴参考下吧
根据指定的前后两个日期,计算这两个日期之间各个周的起始时间和结束时间,以及各个月的起始时间和结束时间
日志格式化类 Date.class.php
<?php class Datefmt{ function __construct() {} /** * 根据指定日期获取所在周的起始时间和结束时间 */ public function get_weekinfo_by_date($date) { $idx = strftime("%u", strtotime($date)); $mon_idx = $idx - 1; $sun_idx = $idx - 7; return array( 'week_start_day' => 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)); } } }
类文件的使用
<?php require_once "Datefmt.class.php"; $datefmt = new Datefmt(); // 输出11月1日和30日之间的各周 var_dump($datefmt->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" } */
php使用正则表达式获取图片url的方法
php使用CURL伪造IP和来源实例详解
php+mysql实现无限分类实例详解
php截取html字符串及自动补全html标签的方法
php在linux下检测mysql同步状态的方法
php+mysql删除指定编号员工信息的方法
php实现redis数据库指定库号迁移的方法
php实现按指定大小等比缩放生成上传图片缩略图的方法
PHP截取指定图片大小的方法
两个php日期控制类实例
PHP间隔一段时间执行代码的方法
php设置静态内容缓存时间的方法
php查找指定目录下指定大小文件的方法
PHP实现无限极分类图文教程
Thinkphp搭建包括JS多语言的多语言项目实现方法
thinkphp判断访客为手机端或PC端的方法
ThinkPHP公共配置文件与各自项目中配置文件组合的方法
php使用str_replace实现输入框回车替换br的方法
thinkphp循环结构用法实例
PHP中UNIX时间戳和日期间的转换与计算实例
php使用glob函数快速查询指定目录文件的方法
php使用date和strtotime函数输出指定日期的方法
php格式化日期实例分析
PHP屏蔽过滤指定关键字的方法
php格式化时间戳显示友好的时间实现思路及代码
php时间戳格式化显示友好的时间函数分享
php实现删除指定目录下相关文件的方法
php实现的Timer页面运行时间监测类
php修改指定文件后缀的方法
PHP中的日期加减方法示例
PHP中比较时间大小实例
PHP计算一年多少个星期和每周的开始和结束日期
PHP5各个版本的新功能和新特性总结