分享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 相关文章推荐
弄了个检测传输的参数是否为数字的Function
Dec 06 PHP
一家之言的经验之谈php+mysql扎实个人基本功
Mar 27 PHP
php中serialize序列化与json性能测试的示例分析
Apr 27 PHP
浅谈PHP与C#的值类型指向区别的详解
May 21 PHP
thinkphp实现数组分页示例
Apr 13 PHP
PHP导入导出Excel代码
Jul 07 PHP
Zend Framework教程之Zend_Helpers动作助手ViewRenderer用法详解
Jul 20 PHP
thinkphp多表查询两表有重复相同字段的完美解决方法
Sep 22 PHP
php之可变函数的实例详解
Sep 13 PHP
Ubuntu 16.04中Laravel5.4升级到5.6的步骤
Dec 07 PHP
laravel框架实现为 Blade 模板引擎添加新文件扩展名操作示例
Jan 25 PHP
PHP设计模式之迭代器模式Iterator实例分析【对象行为型】
Apr 26 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
骨王战斗力在公会成员中排不进前五,却当选了会长,原因竟是这样
2020/03/02 日漫
php生成随机数或者字符串的代码
2008/09/05 PHP
php&amp;mysql 日期操作小记
2012/02/27 PHP
php实现天干地支计算器示例
2014/03/14 PHP
PHP中foreach()用法汇总
2015/07/02 PHP
PHP中in_array函数使用的问题与解决办法
2016/09/11 PHP
PHP实现生成模糊图片的方法示例
2017/12/21 PHP
PHP常量及变量区别原理详解
2020/08/14 PHP
JavaScript实现动态创建CSS样式规则方案
2014/09/06 Javascript
浅谈javascript 归并方法
2015/01/21 Javascript
JQuery解析XML数据的几个简单实例
2016/05/18 Javascript
深入理解jQuery 事件处理
2016/06/14 Javascript
关于JavaScript数组你所不知道的3件事
2016/08/24 Javascript
JavaScript 中 avalon绑定属性总结
2016/10/19 Javascript
vue中用动态组件实现选项卡切换效果
2017/03/25 Javascript
关于vue.js组件数据流的问题
2017/07/26 Javascript
nodejs express配置自签名https服务器的方法
2018/05/22 NodeJs
React 组件间的通信示例
2018/06/14 Javascript
简单分析js中的this的原理
2019/08/31 Javascript
浅析vue中的provide / inject 有什么用处
2019/11/10 Javascript
详解datagrid使用方法(重要)
2020/11/06 Javascript
python+selenium开发环境搭建图文教程
2017/08/11 Python
python生成圆形图片的方法
2020/03/25 Python
对python_discover方法遍历所有执行的用例详解
2019/02/13 Python
python顺序执行多个py文件的方法
2019/06/29 Python
使用Python制作表情包实现换脸功能
2019/07/19 Python
pycharm解决关闭flask后依旧可以访问服务的问题
2020/04/03 Python
Python使用jupyter notebook查看ipynb文件过程解析
2020/06/02 Python
Python容器类型公共方法总结
2020/08/19 Python
PyTorch中的拷贝与就地操作详解
2020/12/09 Python
详解如何在登录过期后跳出Ifram框架
2020/09/10 HTML / CSS
小学生综合素质评语
2014/04/23 职场文书
企业安全生产演讲稿
2014/05/09 职场文书
应届生自荐信
2014/06/30 职场文书
房地产端午节活动方案
2014/08/24 职场文书
家属联谊会致辞
2015/07/31 职场文书