分享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 相关文章推荐
什么是MVC,好东西啊
May 03 PHP
php遍历数组的方法分享
Mar 22 PHP
php DOS攻击实现代码(附如何防范)
May 29 PHP
php中判断文件存在是用file_exists还是is_file的整理
Sep 12 PHP
PHP跳转页面的几种实现方法详解
Jun 08 PHP
PHP批量检测并去除文件BOM头代码实例
May 08 PHP
php以post形式发送xml的方法
Nov 04 PHP
避免Smarty与CSS语法冲突的方法
Mar 02 PHP
PHP模板引擎Smarty内建函数foreach,foreachelse用法分析
Apr 11 PHP
PHP获取redis里不存在的6位随机数应用示例【设置24小时过时】
Jun 07 PHP
实现laravel 插入操作日志到数据库的方法
Oct 11 PHP
PHP程序员简单的开展服务治理架构操作详解(一)
May 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
windows环境下php配置memcache的具体操作步骤
2013/06/09 PHP
ThinkPHP缓存方法S()概述
2014/06/13 PHP
php出现web系统多域名登录失败的解决方法
2014/09/30 PHP
Zend Framework入门教程之Zend_Config组件用法详解
2016/12/09 PHP
redis查看连接数及php模拟并发创建redis连接的方法
2016/12/15 PHP
Yii2 批量插入、更新数据实例
2017/03/15 PHP
prototype 中文参数乱码解决方案
2009/11/09 Javascript
使用jQuery jqPlot插件绘制柱状图
2014/12/18 Javascript
jQuery实现hover合成事件的方法
2015/08/06 Javascript
EasyUI修改DateBox和DateTimeBox的默认日期格式示例
2017/01/18 Javascript
React-Native实现ListView组件之上拉刷新实例(iOS和Android通用)
2017/07/11 Javascript
JS 中使用Promise 实现红绿灯实例代码(demo)
2017/10/20 Javascript
vue轮播图插件vue-concise-slider的使用
2018/03/13 Javascript
Angularjs之如何在跨域请求中传输Cookie的方法
2018/06/01 Javascript
js技巧之十几行的代码实现vue.watch代码
2018/06/09 Javascript
微信小程序自定义底部弹出框
2020/11/16 Javascript
3分钟了解vue数据劫持的原理实现
2019/05/01 Javascript
vuex存储复杂参数(如对象数组等)刷新数据丢失的解决方法
2019/11/05 Javascript
python写入xml文件的方法
2015/05/08 Python
利用Pycharm断点调试Python程序的方法
2018/11/29 Python
详解Python数据可视化编程 - 词云生成并保存(jieba+WordCloud)
2019/03/26 Python
python的sorted用法详解
2019/06/25 Python
python标记语句块使用方法总结
2019/08/05 Python
python队列原理及实现方法示例
2019/11/27 Python
python线程定时器Timer实现原理解析
2019/11/30 Python
Python异常处理机制结构实例解析
2020/07/23 Python
css3实现六边形边框的实例代码
2019/05/24 HTML / CSS
全球领先的中国制造商品在线批发平台:DHgate
2020/01/28 全球购物
Deichmann英国:德国鞋类零售商
2021/01/30 全球购物
理工大学毕业生自荐信范文
2014/02/22 职场文书
财务情况说明书范文
2014/05/06 职场文书
2014保险公司个人工作总结
2014/12/09 职场文书
2015年酒店销售部工作总结
2015/07/24 职场文书
如何利用React实现图片识别App
2022/02/18 Javascript
golang实现浏览器导出excel文件功能
2022/03/25 Golang
vue/cli 配置动态代理无需重启服务的方法
2022/05/20 Vue.js