分享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 相关文章推荐
PHP新手上路(十二)
Oct 09 PHP
PHPLog php 程序调试追踪工具
Sep 09 PHP
phpmyadmin 3.4 空密码登录的实现方法
May 29 PHP
simplehtmldom Doc api帮助文档
Mar 26 PHP
php class中self,parent,this的区别以及实例介绍
Apr 24 PHP
php去除数组中重复数据
Nov 18 PHP
php运行报错Call to undefined function curl_init()的最新解决方法
Nov 20 PHP
PHP jQuery+Ajax结合写批量删除功能
May 19 PHP
PHP APP微信提现接口代码
Sep 30 PHP
PHP获取当前系统时间的方法小结
Oct 03 PHP
PHP封装类似thinkphp连贯操作数据库Db类与简单应用示例
May 08 PHP
php查看一个变量的占用内存的实例代码
Mar 29 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统计目录中文件以及目录中目录大小的方法
2016/01/09 PHP
PHP排序算法之简单选择排序(Simple Selection Sort)实例分析
2018/04/20 PHP
thinkphp框架使用JWTtoken的方法详解
2019/10/10 PHP
Javascript Object.extend
2010/05/18 Javascript
javascript 词法作用域和闭包分析说明
2010/08/12 Javascript
阻止事件(取消浏览器对事件的默认行为并阻止其传播)
2013/11/03 Javascript
理解JavaScript的变量的入门教程
2015/07/07 Javascript
JS操作JSON方法总结(推荐)
2016/06/14 Javascript
Javascript Event(事件)的传播与冒泡
2017/01/23 Javascript
zTree实现节点修改的实时刷新功能
2017/03/20 Javascript
全面解析Node.js 8 重要功能和修复
2017/06/02 Javascript
js canvas实现写字动画效果
2018/11/30 Javascript
es6数值的扩展方法
2019/03/11 Javascript
详解用js代码触发dom事件的实现方案
2020/06/10 Javascript
[51:15]2014 DOTA2国际邀请赛中国区预选赛 Orenda VS LGD-GAMING
2014/05/22 DOTA
深入浅出学习python装饰器
2017/09/29 Python
django上传图片并生成缩略图方法示例
2017/12/11 Python
python3实现域名查询和whois查询功能
2018/06/21 Python
python Qt5实现窗体跟踪鼠标移动
2019/12/13 Python
利用Python脚本批量生成SQL语句
2020/03/04 Python
matplotlib quiver箭图绘制案例
2020/04/17 Python
python中sort sorted reverse reversed函数的区别说明
2020/05/11 Python
django创建超级用户时指定添加其它字段方式
2020/05/14 Python
CSS3实现精美横向滚动菜单按钮
2017/04/14 HTML / CSS
高性能钓鱼服装:Huk Gear
2019/02/20 全球购物
微软加拿大官方网站:Microsoft Canada
2019/04/28 全球购物
白俄罗斯女装和针织品网上商店:Presli.by
2019/10/13 全球购物
交通安全演讲稿
2014/01/07 职场文书
计算机专业优秀大学生自我总结
2014/01/21 职场文书
股东协议书范本
2014/04/14 职场文书
组工干部对照检查材料
2014/08/25 职场文书
酒店端午节活动方案
2014/08/26 职场文书
英文慰问信
2015/02/14 职场文书
毕业论文指导老师意见
2015/06/04 职场文书
MySQL数据库完全卸载的方法
2022/03/03 MySQL
spring IOC容器的Bean管理XML自动装配过程
2022/05/30 Java/Android