分享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 相关文章推荐
第十三节 对象串行化 [13]
Oct 09 PHP
用PHP和ACCESS写聊天室(四)
Oct 09 PHP
PHP_NETWORK_GETADDRESSES: GETADDRINFO FAILED问题解决办法
May 04 PHP
PHP之autoload运行机制实例分析
Aug 28 PHP
php中Snoopy类用法实例
Jun 19 PHP
Yii核心验证器api详解
Nov 23 PHP
PHP基于方差和标准差计算学生成绩的稳定性示例
Jul 04 PHP
php判断str字符串是否是xml格式数据的方法示例
Jul 26 PHP
PHP fclose函数用法总结
Feb 15 PHP
php写入txt乱码的解决方法
Sep 17 PHP
使用laravel根据用户类型来显示或隐藏字段
Oct 17 PHP
php下的原生ajax请求用法实例分析
Feb 28 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
通过JavaScript或PHP检测Android设备的代码
2011/03/09 PHP
采集邮箱的php代码(抓取网页中的邮箱地址)
2012/07/17 PHP
php实现根据字符串生成对应数组的方法
2014/09/22 PHP
PHP编写的图片验证码类文件分享
2016/06/06 PHP
基于PHP实现栈数据结构和括号匹配算法示例
2017/08/10 PHP
TP5多入口设置实例讲解
2020/12/15 PHP
锋利的jQuery 第三章章节总结的例子
2010/03/23 Javascript
解决js下referer兼容各大浏览器的方法
2014/11/03 Javascript
JavaScript使用Max函数返回两个数字中较大数的方法
2015/04/06 Javascript
javascript数组去重的方法汇总
2015/04/14 Javascript
jQuery中cookie插件用法实例分析
2015/12/04 Javascript
使用JQuery中的trim()方法去掉前后空格
2016/09/16 Javascript
JS日程管理插件FullCalendar中文说明文档
2017/02/06 Javascript
JavaScript数据结构中栈的应用之表达式求值问题详解
2017/04/11 Javascript
微信小程序文章详情页面实现代码
2018/09/10 Javascript
Vue配置marked链接添加target=&quot;_blank&quot;的方法
2019/07/19 Javascript
使用Layui搭建后台管理界面的操作方法
2019/09/20 Javascript
vue + elementUI实现省市县三级联动的方法示例
2019/10/29 Javascript
jquery实现加载更多&quot;转圈圈&quot;效果(示例代码)
2020/11/09 jQuery
python实现unicode转中文及转换默认编码的方法
2017/04/29 Python
Python 写入训练日志文件并控制台输出解析
2019/08/13 Python
Python文件操作函数用法实例详解
2019/12/24 Python
CSS3效果:自定义“W”形运行轨迹实例
2017/03/29 HTML / CSS
中国电视购物:快乐购
2017/02/04 全球购物
英国和爱尔兰的自炊式豪华度假小屋:Rural Retreats
2018/06/08 全球购物
大学生活动总结怎么写
2014/04/29 职场文书
祖国在我心中演讲稿(小学生)
2014/09/23 职场文书
党员批评与自我批评思想汇报
2014/10/08 职场文书
幼师个人总结范文
2015/02/28 职场文书
我的1919观后感
2015/06/03 职场文书
运动会通讯稿600字
2015/07/20 职场文书
历史名人教你十五个读书方法,赶快Get起来!
2019/07/18 职场文书
在Python中如何使用yield
2021/06/07 Python
Pytorch可视化的几种实现方法
2021/06/10 Python
详解Python中下划线的5种含义
2021/07/15 Python
MySQL创建管理HASH分区
2022/04/13 MySQL