分享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 相关文章推荐
php5数字型字符串加解密代码
Apr 24 PHP
PHP删除特定数组内容并且重建数组索引的方法.
Mar 25 PHP
利用PHP实现图片等比例放大和缩小的方法详解
Jun 06 PHP
php如何解决无法上传大于8M的文件问题
Mar 10 PHP
PHP基于MySQL数据库实现对象持久层的方法
Jun 17 PHP
5款适合PHP使用的HTML编辑器推荐
Jul 03 PHP
PHP中Closure类的使用方法及详解
Oct 09 PHP
PHP实现原比例生成缩略图的方法
Feb 03 PHP
php使用preg_match()函数验证ip地址的方法
Jan 07 PHP
Laravel中如何增加自定义全局函数详解
May 09 PHP
PHP机器学习库php-ml的简单测试和使用方法
Jul 14 PHP
Thinkphp页面跳转设置跳转等待时间的操作
Oct 16 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中读取和写入WORD文档的代码
2008/04/09 PHP
PHP保留两位小数并且四舍五入及不四舍五入的方法
2013/09/22 PHP
对比PHP对MySQL的缓冲查询和无缓冲查询
2016/07/01 PHP
使用按钮控制以何种方式打开新窗口的属性介绍
2012/12/17 Javascript
基于jquery自定义的漂亮单选按钮RadioButton
2013/11/19 Javascript
jQuery使用empty()方法删除元素及其所有子元素的方法
2015/03/26 Javascript
JavaScript实现鼠标滑过处生成气泡的方法
2015/05/16 Javascript
JS和css实现检测移动设备方向的变化并判断横竖屏幕
2015/05/25 Javascript
jQuery对JSON数据进行排序输出的方法
2015/06/24 Javascript
jQuery实现气球弹出框式的侧边导航菜单效果
2015/09/22 Javascript
node.js回调函数之阻塞调用与非阻塞调用
2015/11/13 Javascript
jquery自定义表格样式
2015/11/23 Javascript
使用Function.apply()的参数数组化来提高 JavaScript程序性能的技巧
2015/12/23 Javascript
完美实现js选项卡切换效果(一)
2017/03/08 Javascript
浅析Vue自定义组件的v-model
2017/11/26 Javascript
jQuery 点击获取验证码按钮及倒计时功能
2018/09/20 jQuery
js隐式转换的知识实例讲解
2018/09/28 Javascript
JS基于开关思想实现的数组去重功能【案例】
2019/02/18 Javascript
layui实现数据分页功能
2019/07/27 Javascript
ES2020 新特性(种草)
2020/01/12 Javascript
vue绑定数字类型 value为数字的实例
2020/08/31 Javascript
学习Python selenium自动化网页抓取器
2018/01/20 Python
Python使用正则表达式获取网页中所需要的信息
2018/01/29 Python
深入浅析Python中list的复制及深拷贝与浅拷贝
2018/09/03 Python
Python 继承,重写,super()调用父类方法操作示例
2019/09/29 Python
python GUI库图形界面开发之PyQt5树形结构控件QTreeWidget详细使用方法与实例
2020/03/02 Python
keras中的卷积层&amp;池化层的用法
2020/05/22 Python
python中添加模块导入路径的方法
2021/02/03 Python
HTML5的结构和语义(5):交互
2008/10/17 HTML / CSS
法国女性内衣购物网站:Glamuse
2019/05/13 全球购物
求职简历中自我评价
2014/01/28 职场文书
2014班子成员自我剖析材料思想汇报
2014/10/01 职场文书
幼儿园三八妇女节活动总结
2015/02/06 职场文书
2015年教师节慰问信
2015/03/23 职场文书
学习经验交流会演讲稿
2015/11/02 职场文书
vue实力踩坑之push当前页无效
2022/04/10 Vue.js