分享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 相关文章推荐
PHP实现分页的一个示例
Oct 09 PHP
php foreach、while性能比较
Oct 15 PHP
使用php+Ajax实现唯一校验实现代码[简单应用]
Nov 29 PHP
PHP类的静态(static)方法和静态(static)变量使用介绍
Feb 19 PHP
PHP数据类型之整数类型、浮点数的介绍
Apr 28 PHP
完美解决:Apache启动问题―(OS 10022)提供了一个无效的参数
Jun 08 PHP
php防止网站被攻击的应急代码
Oct 21 PHP
WordPress主题制作中自定义头部的相关PHP函数解析
Jan 08 PHP
php基于curl主动推送最新内容给百度收录的方法
Oct 14 PHP
浅谈关于PHP解决图片无损压缩的问题
Sep 01 PHP
php实现的生成迷宫与迷宫寻址算法完整实例
Nov 06 PHP
php用wangeditor3实现图片上传功能
Aug 22 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自动适应范围的分页代码
2008/08/05 PHP
php面向对象全攻略 (二) 实例化对象 使用对象成员
2009/09/30 PHP
通过PHP修改Linux或Unix口令的方法分享
2012/01/30 PHP
laravel withCount 统计关联数量的方法
2019/10/10 PHP
从新浪弄下来的全屏广告代码 与使用说明
2007/03/15 Javascript
Stop SQL Server
2007/06/21 Javascript
TextArea设置MaxLength属性最大输入值的js代码
2012/12/21 Javascript
AngularJS实现分页显示数据库信息
2016/07/01 Javascript
关于List.ToArray()方法的效率测试
2016/09/30 Javascript
JavaScript自定义函数实现查找两个字符串最长公共子串的方法
2016/11/24 Javascript
详解Jquery Easyui的验证扩展
2017/01/09 Javascript
JS实现移动端按首字母检索城市列表附源码下载
2017/07/05 Javascript
在vue-cli中组件通信的方法
2017/12/16 Javascript
如何利用ES6进行Promise封装总结
2019/02/11 Javascript
微信小程序云开发之使用云函数
2019/05/17 Javascript
解决vue组件props传值对象获取不到的问题
2019/06/06 Javascript
js中值引用和地址引用实例分析
2019/06/21 Javascript
Python ORM框架SQLAlchemy学习笔记之数据添加和事务回滚介绍
2014/06/10 Python
Centos Python2 升级到Python3的简单实现
2016/06/21 Python
Python实现感知机(PLA)算法
2017/12/20 Python
centos 安装Python3 及对应的pip教程详解
2019/06/28 Python
通过实例解析Python RPC实现原理及方法
2020/07/07 Python
python 使用tkinter+you-get实现视频下载器
2020/11/17 Python
通过Python pyecharts输出保存图片代码实例
2020/11/25 Python
史泰博(Staples)中国官方网站:办公用品一站式采购
2016/09/05 全球购物
lululemon美国官网:瑜伽服+跑步装备
2018/11/16 全球购物
环保专业大学生职业规划设计
2014/01/10 职场文书
打架检讨书100字
2014/01/19 职场文书
《回乡偶书》教学反思
2014/04/12 职场文书
医学专业毕业生求职信
2014/06/20 职场文书
村委会贫困证明范本
2014/09/17 职场文书
英语复习计划
2015/01/19 职场文书
2015年教师见习期工作总结
2015/05/20 职场文书
医学生自荐信范文(2016精选篇)
2016/01/28 职场文书
2016年“5.12”国际护士节活动总结
2016/04/06 职场文书
SqlServer: 如何更改表的文件组?(进而改变存储位置)
2021/04/05 SQL Server