首页 > 语言 > 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. echo "<pre>"
  29. print_r($month_day_arr); 
  30.    
  31. Array 
  32.   [0] => Array 
  33.     ( 
  34.       [0] =>  
  35.       [1] =>  
  36.       [2] => 1 
  37.       [3] => 2 
  38.       [4] => 3 
  39.       [5] => 4 
  40.       [6] => 5 
  41.     ) 
  42.    
  43.   [1] => Array 
  44.     ( 
  45.       [0] => 6 
  46.       [1] => 7 
  47.       [2] => 8 
  48.       [3] => 9 
  49.       [4] => 10 
  50.       [5] => 11 
  51.       [6] => 12 
  52.     ) 
  53.    
  54.   [2] => Array 
  55.     ( 
  56.       [0] => 13 
  57.       [1] => 14 
  58.       [2] => 15 
  59.       [3] => 16 
  60.       [4] => 17 
  61.       [5] => 18 
  62.       [6] => 19 
  63.     ) 
  64.    
  65.   [3] => Array 
  66.     ( 
  67.       [0] => 20 
  68.       [1] => 21 
  69.       [2] => 22 
  70.       [3] => 23 
  71.       [4] => 24 
  72.       [5] => 25 
  73.       [6] => 26 
  74.     ) 
  75.    
  76.   [4] => Array 
  77.     ( 
  78.       [0] => 27 
  79.       [1] => 28 
  80.       [2] => 29 
  81.       [3] => 30 
  82.     ) 
  83.    

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

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

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