分享3个php获取日历的函数
本文给大家汇总了3个php获取日历的函数,分别是php获取指定日期的月份的日历、获取指定日期所在月的开始日期与结束日期、获取当前星期的日期范围,都是比较常用的方法,有需要的小伙伴可以参考下。
提供一个日期,获取这个日期的星期对应日历列表,键为星期标示:
- $month_date = '2015-09-25';
- $start_time = strtotime($month_date);
- $start_week = date('w', $start_time);
- $total_month_day = date('t', $start_time);
- $weeks_in_month = ceil(($start_week+$total_month_day)/7);
- $month_day_arr = [];
- $start_month_day = 1;
- for($i=0;$i<$weeks_in_month;$i++) {
- for($j=0;$j<7;$j++){
- if($i ==0 && $j >= $start_week) {
- $month_day_arr[$i][$j] = $start_month_day;
- $start_month_day++;
- } elseif($i == 0) {
- $month_day_arr[$i][$j] = '';
- } else {
- $month_day_arr[$i][$j] = $start_month_day;
- $start_month_day++;
- }
- if($start_month_day > $total_month_day){
- break;
- }
- }
- }
- echo "<pre>";
- print_r($month_day_arr);
- Array
- (
- [0] => Array
- (
- [0] =>
- [1] =>
- [2] => 1
- [3] => 2
- [4] => 3
- [5] => 4
- [6] => 5
- )
- [1] => Array
- (
- [0] => 6
- [1] => 7
- [2] => 8
- [3] => 9
- [4] => 10
- [5] => 11
- [6] => 12
- )
- [2] => Array
- (
- [0] => 13
- [1] => 14
- [2] => 15
- [3] => 16
- [4] => 17
- [5] => 18
- [6] => 19
- )
- [3] => Array
- (
- [0] => 20
- [1] => 21
- [2] => 22
- [3] => 23
- [4] => 24
- [5] => 25
- [6] => 26
- )
- [4] => Array
- (
- [0] => 27
- [1] => 28
- [2] => 29
- [3] => 30
- )
- )
获取指定日期所在月的开始日期与结束日期:
- /**
- * @param string $date
- * @param boolean 为true返回开始日期,否则返回结束日期
- * @return array
- * @access private
- */
- private function getMonthRange( $date, $returnFirstDay = true ) {
- $timestamp = strtotime( $date );
- if ( $returnFirstDay ) {
- $monthFirstDay = date( 'Y-m-1 00:00:00', $timestamp );
- return $monthFirstDay;
- } else {
- $mdays = date( 't', $timestamp );
- $monthLastDay = date( 'Y-m-' . $mdays . ' 23:59:59', $timestamp );
- return $monthLastDay;
- }
- }
获取当前星期的日期范围,也就是从星期一到星期日的日期范围。
- function getWeekRange($date){
- $ret=array();
- $timestamp=strtotime($date);
- $w=strftime('%u',$timestamp);
- $ret['sdate']=date('Y-m-d 00:00:00',$timestamp-($w-1)*86400);
- $ret['edate']=date('Y-m-d 23:59:59',$timestamp+(7-$w)*86400);
- return $ret;
- }
- //author:zhxia 获取指定日期所在月的开始日期与结束日期
- function getMonthRange($date){
- $ret=array();
- $timestamp=strtotime($date);
- $mdays=date('t',$timestamp);
- $ret['sdate']=date('Y-m-1 00:00:00',$timestamp);
- $ret['edate']=date('Y-m-'.$mdays.' 23:59:59',$timestamp);
- return $ret;
- }
- //author:zhxia 以上两个函数的应用
- function getFilter($n){
- $ret=array();
- switch($n){
- case 1:// 昨天
- $ret['sdate']=date('Y-m-d 00:00:00',strtotime('-1 day'));
- $ret['edate']=date('Y-m-d 23:59:59',strtotime('-1 day'));
- break;
- case 2://本星期
- $ret=getWeekRange(date('Y-m-d'));
- break;
- case 3://上一个星期
- $strDate=date('Y-m-d',strtotime('-1 week'));
- $ret=getWeekRange($strDate);
- break;
- case 4: //上上星期
- $strDate=date('Y-m-d',strtotime('-2 week'));
- $ret=getWeekRange($strDate);
- break;
- case 5: //本月
- $ret=getMonthRange(date('Y-m-d'));
- break;
- case 6://上月
- $strDate=date('Y-m-d',strtotime('-1 month'));
- $ret=getMonthRange($strDate);
- break;
- }
- return $ret;
- }