首页 > 语言 > PHP > 正文

分享3个php获取日历的函数

2024-09-04 11:42:33
字体:大 中 小
来源:转载
供稿:网友

本文给大家汇总了3个php获取日历的函数,分别是php获取指定日期的月份的日历、获取指定日期所在月的开始日期与结束日期、获取当前星期的日期范围,都是比较常用的方法,有需要的小伙伴可以参考下。

提供一个日期,获取这个日期的星期对应日历列表,键为星期标示:

  1. $month_date = '2015-09-25'; 
  2. $start_time = strtotime($month_date); 
  3. $start_week = date('w', $start_time); 
  4. $total_month_day = date('t', $start_time); 
  5.    
  6. $weeks_in_month = ceil(($start_week+$total_month_day)/7); 
  7.    
  8. $month_day_arr = []; 
  9. $start_month_day = 1; 
  10. for($i=0;$i<$weeks_in_month;$i++) { 
  11.    
  12.   for($j=0;$j<7;$j++){ 
  13.     if($i ==0 && $j >= $start_week) { 
  14.       $month_day_arr[$i][$j] = $start_month_day; 
  15.       $start_month_day++; 
  16.     } elseif($i == 0) { 
  17.       $month_day_arr[$i][$j] = ''; 
  18.     } else { 
  19.       $month_day_arr[$i][$j] = $start_month_day; 
  20.       $start_month_day++; 
  21.     } 
  22.    
  23.     if($start_month_day > $total_month_day){ 
  24.       break; 
  25.     } 
  26.   } 
  27. } 
  28.    
  29. echo "<pre>"; 
  30. print_r($month_day_arr); 
  31.    
  32. Array 
  33. ( 
  34.   [0] => Array 
  35.     ( 
  36.       [0] =>  
  37.       [1] =>  
  38.       [2] => 1 
  39.       [3] => 2 
  40.       [4] => 3 
  41.       [5] => 4 
  42.       [6] => 5 
  43.     ) 
  44.    
  45.   [1] => Array 
  46.     ( 
  47.       [0] => 6 
  48.       [1] => 7 
  49.       [2] => 8 
  50.       [3] => 9 
  51.       [4] => 10 
  52.       [5] => 11 
  53.       [6] => 12 
  54.     ) 
  55.    
  56.   [2] => Array 
  57.     ( 
  58.       [0] => 13 
  59.       [1] => 14 
  60.       [2] => 15 
  61.       [3] => 16 
  62.       [4] => 17 
  63.       [5] => 18 
  64.       [6] => 19 
  65.     ) 
  66.    
  67.   [3] => Array 
  68.     ( 
  69.       [0] => 20 
  70.       [1] => 21 
  71.       [2] => 22 
  72.       [3] => 23 
  73.       [4] => 24 
  74.       [5] => 25 
  75.       [6] => 26 
  76.     ) 
  77.    
  78.   [4] => Array 
  79.     ( 
  80.       [0] => 27 
  81.       [1] => 28 
  82.       [2] => 29 
  83.       [3] => 30 
  84.     ) 
  85.    
  86. ) 

获取指定日期所在月的开始日期与结束日期:

  1. /** 
  2.    * @param string $date 
  3.    * @param boolean 为true返回开始日期,否则返回结束日期 
  4.    * @return array 
  5.    * @access private 
  6.    */ 
  7.   private function getMonthRange( $date, $returnFirstDay = true ) { 
  8.     $timestamp = strtotime( $date ); 
  9.     if ( $returnFirstDay ) { 
  10.       $monthFirstDay = date( 'Y-m-1 00:00:00', $timestamp ); 
  11.       return $monthFirstDay; 
  12.     } else { 
  13.       $mdays = date( 't', $timestamp ); 
  14.       $monthLastDay = date( 'Y-m-' . $mdays . ' 23:59:59', $timestamp ); 
  15.       return $monthLastDay; 
  16.     } 
  17.   } 

获取当前星期的日期范围,也就是从星期一到星期日的日期范围。

  1. function getWeekRange($date){ 
  2. $ret=array(); 
  3. $timestamp=strtotime($date); 
  4. $w=strftime('%u',$timestamp); 
  5. $ret['sdate']=date('Y-m-d 00:00:00',$timestamp-($w-1)*86400); 
  6. $ret['edate']=date('Y-m-d 23:59:59',$timestamp+(7-$w)*86400); 
  7. return $ret; 
  8. } 
  9. //author:zhxia 获取指定日期所在月的开始日期与结束日期 
  10. function getMonthRange($date){ 
  11. $ret=array(); 
  12. $timestamp=strtotime($date); 
  13. $mdays=date('t',$timestamp); 
  14. $ret['sdate']=date('Y-m-1 00:00:00',$timestamp); 
  15. $ret['edate']=date('Y-m-'.$mdays.' 23:59:59',$timestamp); 
  16. return $ret; 
  17. } 
  18. //author:zhxia 以上两个函数的应用 
  19. function getFilter($n){ 
  20. $ret=array(); 
  21. switch($n){ 
  22. case 1:// 昨天 
  23. $ret['sdate']=date('Y-m-d 00:00:00',strtotime('-1 day')); 
  24. $ret['edate']=date('Y-m-d 23:59:59',strtotime('-1 day')); 
  25. break; 
  26. case 2://本星期 
  27. $ret=getWeekRange(date('Y-m-d')); 
  28. break; 
  29. case 3://上一个星期 
  30. $strDate=date('Y-m-d',strtotime('-1 week')); 
  31. $ret=getWeekRange($strDate); 
  32. break; 
  33. case 4: //上上星期 
  34. $strDate=date('Y-m-d',strtotime('-2 week')); 
  35. $ret=getWeekRange($strDate); 
  36. break; 
  37. case 5: //本月 
  38. $ret=getMonthRange(date('Y-m-d')); 
  39. break; 
  40. case 6://上月 
  41. $strDate=date('Y-m-d',strtotime('-1 month')); 
  42. $ret=getMonthRange($strDate); 
  43. break; 
  44. } 
  45. return $ret; 
  46. }

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表