分享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 相关文章推荐
WindowsXP中快速配置Apache+PHP5+Mysql
Jun 05 PHP
从PHP $_SERVER相关参数判断是否支持Rewrite模块
Sep 26 PHP
php中chdir()函数用法实例
Nov 13 PHP
php静态文件返回304技巧分享
Jan 06 PHP
php开发时容易忘记的一些技术细节
Feb 03 PHP
抛弃 PHP 代价太高
Apr 26 PHP
Yii安装与使用Excel扩展的方法
Jul 13 PHP
PHP中单例模式与工厂模式详解
Feb 17 PHP
Zend Framework框架中实现Ajax的方法示例
Jun 27 PHP
PHP笛卡尔积实现算法示例
Jul 30 PHP
windows 2008r2+php5.6.28环境搭建详细过程
Jun 18 PHP
laravel 修改记住我功能的cookie保存时间的方法
Oct 14 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+xslt在windows平台上
2006/10/09 PHP
PHP类与对象中的private访问控制的疑问
2012/11/01 PHP
教你如何使用php session
2013/10/28 PHP
php5.3 goto函数介绍和示例
2014/03/21 PHP
PHP网页游戏学习之Xnova(ogame)源码解读(十一)
2014/06/25 PHP
PHP防盗链代码实例
2014/08/27 PHP
PHP使用strtotime计算两个给定日期之间天数的方法
2015/03/18 PHP
Aptana调试javascript图解教程
2009/11/30 Javascript
javascript跨域刷新实现代码
2011/01/01 Javascript
js数组的基本用法及数组根据下标(数值或字符)移除元素
2013/10/20 Javascript
javascript中简单的进制转换代码实例
2013/10/26 Javascript
setTimeout自动触发一个js的方法
2014/01/15 Javascript
JS去掉第一个字符和最后一个字符的实现代码
2014/02/20 Javascript
javascript获取本机操作系统类型的方法
2015/08/13 Javascript
bootstrap警告框使用方法解析
2017/01/13 Javascript
ReactNative踩坑之配置调试端口的解决方法
2017/07/28 Javascript
nodejs超出最大的调用栈错误问题
2017/12/27 NodeJs
vue项目移动端实现ip输入框问题
2019/03/19 Javascript
微信小程序云函数使用mysql数据库过程详解
2019/08/07 Javascript
js 计数排序的实现示例(升级版)
2020/01/12 Javascript
vue 路由缓存 路由嵌套 路由守卫 监听物理返回操作
2020/08/06 Javascript
如何不用安装python就能在.NET里调用Python库
2019/07/12 Python
Django设置Postgresql的操作
2020/05/14 Python
opencv之颜色过滤只留下图片中的红色区域操作
2020/06/05 Python
Python collections.deque双边队列原理详解
2020/10/05 Python
html5中的input新属性range使用记录
2014/09/05 HTML / CSS
安德玛菲律宾官网:Under Armour菲律宾
2020/07/28 全球购物
领导的自我鉴定
2013/12/28 职场文书
办护照工作证明范本
2014/01/14 职场文书
2014年中班元旦活动方案
2014/02/14 职场文书
毕业生如何写自我鉴定
2014/03/15 职场文书
人事经理岗位职责范本
2014/08/04 职场文书
仲裁协议书
2014/09/26 职场文书
化工厂员工工作总结
2015/10/15 职场文书
python执行js代码的方法
2021/05/13 Python
windows系统搭建WEB服务器详细教程
2022/08/05 Servers