分享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实现图形显示Ip地址的代码及注释
Jan 20 PHP
ThinkPHP令牌验证实例
Jun 18 PHP
JavaScript创建命名空间的5种写法
Jun 24 PHP
PHP中使用asort进行中文排序失效的问题处理
Aug 18 PHP
PHP模板引擎Smarty内建函数foreach,foreachelse用法分析
Apr 11 PHP
php面向对象值单例模式
May 03 PHP
php 流程控制switch的简单实例
Jun 07 PHP
Laravel中七个非常有用但很少人知道的Carbon方法
Sep 21 PHP
PHP设计模式之工厂模式(Factory Pattern)的讲解
Mar 21 PHP
PHP单例模式实例分析【防继承,防克隆操作】
May 22 PHP
Yii2.0框架模型添加/修改/删除数据操作示例
Jul 18 PHP
PHP网站常见安全漏洞,及相应防范措施总结
Mar 01 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
List the Codec Files on a Computer
2007/06/18 Javascript
随机显示经典句子或诗歌的javascript脚本
2007/08/04 Javascript
页面中body onload 和 window.onload 冲突的问题的解决
2009/07/01 Javascript
jquery $.ajax()取xml数据的小问题解决方法
2010/11/20 Javascript
jquery load事件(callback/data)使用方法及注意事项
2013/02/06 Javascript
js中关于一个分号的崩溃示例
2013/11/11 Javascript
JavaScript中的setUTCDate()方法使用详解
2015/06/11 Javascript
JavaScript实现带箭头标识的多级下拉菜单效果
2015/08/27 Javascript
Javascript小技能总结(推荐)
2016/06/02 Javascript
Bootstrap 响应式实用工具实例详解
2017/03/29 Javascript
详解vue-router基本使用
2017/04/18 Javascript
微信小程序中页面FOR循环和嵌套循环
2017/06/21 Javascript
微信小程序页面跳转功能之从列表的item项跳转到下一个页面的方法
2017/11/27 Javascript
vue 实现在函数中触发路由跳转的示例
2018/09/01 Javascript
微信小程序如何调用json数据接口并解析
2019/06/29 Javascript
ES6中的Javascript解构的实现
2020/10/30 Javascript
Python使用CMD模块更优雅的运行脚本
2015/05/11 Python
itchat接口使用示例
2017/10/23 Python
Python IDLE入门简介
2017/12/08 Python
Python通过属性手段实现只允许调用一次的示例讲解
2018/04/21 Python
python3.5绘制随机漫步图
2018/08/27 Python
Python内存管理实例分析
2019/07/10 Python
关于Numpy数据类型对象(dtype)使用详解
2019/11/27 Python
pytorch程序异常后删除占用的显存操作
2020/01/13 Python
python能自学吗
2020/06/18 Python
澳大利亚旅游网站:Lastminute
2017/08/07 全球购物
正宗的澳大利亚Ugg靴子零售商:UGG Express
2020/04/19 全球购物
SQL Server面试题
2013/04/04 面试题
历史系自荐信范文
2013/12/24 职场文书
2014年保洁工作总结
2014/11/24 职场文书
爱晚亭导游词
2015/02/09 职场文书
客户付款通知书
2015/04/23 职场文书
新生开学寄语大全
2015/05/28 职场文书
幼儿园庆六一主持词
2015/06/30 职场文书
2015年政教主任工作总结
2015/07/23 职场文书
Spring Boot 实现 WebSocket
2022/04/30 Java/Android