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


Posted in PHP onSeptember 25, 2015

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

$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;
}
PHP 相关文章推荐
hessian 在PHP中的使用介绍
Dec 13 PHP
php设计模式 Strategy(策略模式)
Jun 26 PHP
PHP大小写问题:函数名和类名不区分,变量名区分
Jun 17 PHP
destoon实现底部添加你是第几位访问者的方法
Jul 15 PHP
又一个PHP实现的冒泡排序算法分享
Aug 21 PHP
php针对cookie操作的队列操作类实例
Dec 10 PHP
详解WordPress中创建和添加过滤器的相关PHP函数
Dec 29 PHP
深入理解Yii2.0乐观锁与悲观锁的原理与使用
Jul 26 PHP
原生JS实现Ajax通过POST方式与PHP进行交互的方法示例
May 12 PHP
ThinkPHP5.0框架控制器继承基类和自定义类示例
May 25 PHP
PHP中16个高危函数整理
Sep 19 PHP
PHP扩展安装方法步骤解析
Nov 24 PHP
PHP中配置IIS7实现基本身份验证的方法
Sep 24 #PHP
常见PHP数据库解决方案分析介绍
Sep 24 #PHP
又十个超级有用的PHP代码片段
Sep 24 #PHP
PHP易混淆知识整理笔记
Sep 24 #PHP
PHP直接修改表内容DataGrid功能实现代码
Sep 24 #PHP
PHP生成条形码大揭秘
Sep 24 #PHP
php商品对比功能代码分享
Sep 24 #PHP
You might like
PHP设计模式之调解者模式的深入解析
2013/06/13 PHP
hadoop常见错误以及处理方法详解
2013/06/19 PHP
thinkphp中html:list标签传递多个参数实例
2014/10/30 PHP
PHP中变量引用与变量销毁机制分析
2014/11/15 PHP
PHP异常类及异常处理操作实例详解
2018/12/19 PHP
自己开发Dojo的建议框架
2008/09/24 Javascript
js实现页面转发功能示例代码
2013/08/05 Javascript
js根据日期判断星座的示例代码
2014/01/23 Javascript
浅析Node.js 中 Stream API 的使用
2015/10/23 Javascript
JavaScript判断微信浏览器实例代码
2016/06/13 Javascript
Select下拉框模糊查询功能实现代码
2016/07/22 Javascript
js格式化时间的简单实例
2016/11/27 Javascript
JS中正则表达式全局匹配模式 /g用法详解
2017/04/01 Javascript
angularjs中ng-bind-html的用法总结
2017/05/23 Javascript
JS对象与JSON互转换、New Function()、 forEach()、DOM事件流等js开发基础小结
2017/08/10 Javascript
js和jQuery以及easyui实现对下拉框的指定赋值方法
2018/01/23 jQuery
vue计算属性和监听器实例解析
2018/05/10 Javascript
vue2.0实现音乐/视频播放进度条组件
2018/06/06 Javascript
vue 子组件watch监听不到prop的解决
2020/08/09 Javascript
[03:06]2018年度CS GO最具人气解说-完美盛典
2018/12/16 DOTA
PyQt5 在label显示的图片中绘制矩形的方法
2019/06/17 Python
解决yum对python依赖版本问题
2019/07/05 Python
Django 大文件下载实现过程解析
2019/08/01 Python
Django之腾讯云短信的实现
2020/06/12 Python
解决python3输入的坑——input()
2020/12/05 Python
使用Python提取文本中含有特定字符串的方法示例
2020/12/09 Python
如何利用input事件来监听移动端的输入
2016/04/15 HTML / CSS
西班牙太阳镜品牌:Hawkers
2018/03/11 全球购物
英国美发和美容产品商城:HQhair
2019/02/08 全球购物
马德里竞技官方网上商店:Atletico Madrid Shop
2019/03/31 全球购物
sleep()方法和wait()方法的区别是什么
2012/11/17 面试题
信息技术课后反思
2014/04/27 职场文书
群众路线自我剖析及整改措施
2014/11/04 职场文书
学校捐款活动总结
2015/05/09 职场文书
酒店宣传语大全
2015/07/13 职场文书
音乐课《小猫钓鱼》教学反思
2016/02/18 职场文书