分享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令牌 Token改进版
Jul 18 PHP
php图片处理:加水印、缩略图的实现(自定义函数:watermark、thumbnail)
Dec 02 PHP
php 团购折扣计算公式
Nov 24 PHP
PHP内置过滤器FILTER使用实例
Jun 25 PHP
php简单计算页面加载时间的方法
Jun 19 PHP
php函数连续调用实例分析
Jul 30 PHP
php 利用socket发送HTTP请求(GET,POST)
Aug 24 PHP
教你php如何实现验证码
Jan 20 PHP
PHP面向对象中new self()与 new static()的区别浅析
Aug 17 PHP
ThinkPHP框架整合微信支付之Native 扫码支付模式一图文详解
Apr 09 PHP
laravel5环境隐藏index.php后缀(apache)的方法
Oct 12 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蜘蛛统计插件只要有mysql就可用
2010/10/12 PHP
深入PHP数据加密详解
2013/06/18 PHP
php判断电脑访问、手机访问的例子
2014/05/10 PHP
支付宝接口开发集成支付环境小结
2015/03/17 PHP
动态表单验证的操作方法和TP框架里面的ajax表单验证
2017/07/19 PHP
Thinkphp5框架ajax接口实现方法分析
2019/08/28 PHP
如何实现JS函数的重载
2006/09/22 Javascript
Jquery选择器 $实现原理
2009/12/02 Javascript
33种Javascript 表格排序控件收集
2009/12/03 Javascript
javascript中字符串拼接需注意的问题
2010/07/13 Javascript
javascript禁用键盘功能键让右击及其他键无效
2013/10/09 Javascript
Javascript的setTimeout()使用闭包特性时需要注意的问题
2014/09/23 Javascript
js中动态创建json,动态为json添加属性、属性值的实例
2016/12/02 Javascript
浅谈JS封闭函数、闭包、内置对象
2017/07/18 Javascript
在Vue.js中使用Mixins的方法
2017/09/12 Javascript
基于jquery trigger函数无法触发a标签的两种解决方法
2018/01/06 jQuery
nodejs中密码加密处理操作详解
2018/03/20 NodeJs
详解Angular操作cookies方法
2018/06/01 Javascript
JS实现的视频弹幕效果示例
2018/08/17 Javascript
React组件对子组件children进行加强的方法
2019/06/23 Javascript
javascript简单实现深浅拷贝过程详解
2019/10/08 Javascript
js实现简单五子棋游戏
2020/05/28 Javascript
VueJS实现用户管理系统
2020/05/29 Javascript
Python运维之获取系统CPU信息的实现方法
2018/06/11 Python
python Pexpect 实现输密码 scp 拷贝的方法
2019/01/03 Python
python将控制台输出保存至文件的方法
2019/01/07 Python
python可视化爬虫界面之天气查询
2019/07/03 Python
python 如何去除字符串头尾的多余符号
2019/11/19 Python
numpy np.newaxis 的实用分享
2019/11/30 Python
pycharm如何实现跨目录调用文件
2020/02/28 Python
解决PyCharm IDE环境下,执行unittest不生成测试报告的问题
2020/09/03 Python
军用级手机壳,专为冒险而建:Zizo Wireless
2019/08/07 全球购物
俄罗斯连接商品和买家的在线平台:goods.ru
2020/11/30 全球购物
一分钟演讲稿
2014/04/30 职场文书
求职自我推荐信
2014/06/25 职场文书
创业不要错过,这4种餐饮新模式
2019/07/18 职场文书