分享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 相关文章推荐
动态新闻发布的实现及其技巧
Oct 09 PHP
php mssql 日期出现中文字符的解决方法
Mar 10 PHP
php环境配置之CGI、FastCGI、PHP-CGI、PHP-FPM、Spawn-FCGI比较?
Oct 17 PHP
Yii实现多按钮保存与提交的方法
Dec 03 PHP
在Debian系统下配置LNMP的教程
Jul 09 PHP
php在数据库抽象层简单使用PDO的方法
Nov 03 PHP
PHP读取大文件末尾N行的高效方法推荐
Jun 03 PHP
PHP使用preg_split()分割特殊字符(元字符等)的方法分析
Feb 04 PHP
thinkPHP实现的联动菜单功能详解
May 05 PHP
Laravel关联模型中过滤结果为空的结果集(has和with区别)
Oct 18 PHP
Laravel 关联模型-关联新增和关联更新的方法
Oct 10 PHP
php优化查询foreach代码实例讲解
Mar 24 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
apache rewrite_module模块使用教程
2008/01/10 PHP
php-fpm配置详解
2014/02/12 PHP
php的curl封装类用法实例
2014/11/07 PHP
php导出中文内容excel文件类实例
2015/07/06 PHP
PHP的CURL方法curl_setopt()函数案例介绍(抓取网页,POST数据)
2016/12/14 PHP
PHP中md5()函数的用法讲解
2019/03/30 PHP
js的event详解。
2006/09/06 Javascript
YUI的Tab切换实现代码
2010/04/11 Javascript
基于jQuery实现的当离开页面时出现提示的实现代码
2011/06/27 Javascript
jquery拖动插件(jquery.drag)使用介绍
2013/06/18 Javascript
javascript操作html控件实例(javascript添加html)
2013/12/02 Javascript
jquery的ajax和getJson跨域获取json数据的实现方法
2014/02/04 Javascript
Javascript 读取操作Sql中的Xml字段
2014/10/09 Javascript
js实现带关闭按钮始终显示在网页最底部工具条的方法
2015/03/02 Javascript
举例简介AngularJS的内部语言环境
2015/06/17 Javascript
javascript弹出拖动窗口
2015/08/11 Javascript
JS onkeypress兼容性写法详解
2016/04/27 Javascript
JSON格式的时间/Date(2367828670431)/格式转为正常的年-月-日 格式的代码
2016/07/27 Javascript
Vue 2.0+Vue-router构建一个简单的单页应用(附源码)
2017/03/14 Javascript
jQuery实现的淡入淡出与滑入滑出效果示例
2018/04/18 jQuery
详解vue 兼容IE报错解决方案
2018/12/29 Javascript
微信小程序实现商品属性联动选择
2019/02/15 Javascript
在Linux下使用Python的matplotlib绘制数据图的教程
2015/06/11 Python
python 在屏幕上逐字显示一行字的实例
2018/12/24 Python
解决django的template中如果无法引用MEDIA_URL问题
2020/04/07 Python
Python函数递归调用实现原理实例解析
2020/08/11 Python
世界上最大的餐具公司:Oneida
2016/12/17 全球购物
Bose法国官网:购买耳机、扬声器、家庭影院、专业音响
2017/12/21 全球购物
办公设备采购方案
2014/03/16 职场文书
艺术设计专业毕业生推荐信
2014/07/08 职场文书
团员自我评价范文
2015/03/10 职场文书
运动会开幕式新闻稿
2015/07/17 职场文书
学雷锋感言
2015/08/03 职场文书
Pytorch GPU内存占用很高,但是利用率很低如何解决
2021/06/01 Python
Python绘画好看的星空图
2022/03/17 Python
大型强子对撞机再次重启探索“第五种自然力”
2022/04/29 数码科技