分享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 相关文章推荐
第十二节--类的自动加载
Nov 16 PHP
header()函数使用说明
Nov 23 PHP
MySQL中create table语句的基本语法是
Jan 15 PHP
mysql_fetch_row,mysql_fetch_array,mysql_fetch_assoc的区别
Apr 24 PHP
php下通过伪造http头破解防盗链的代码
Jul 03 PHP
php多功能图片处理类分享(php图片缩放类)
Mar 14 PHP
PHP错误WARNING: SESSION_START() [FUNCTION.SESSION-START]解决方法
May 04 PHP
支付宝接口开发集成支付环境小结
Mar 17 PHP
php实现的验证码文件类实例
Jun 18 PHP
PHP实现验证码校验功能
Nov 16 PHP
Django 标签筛选的实现代码(一对多、多对多)
Sep 05 PHP
浅谈php常用的7大框架的优缺点
Jul 20 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 PDOStatement:bindParam插入数据错误问题分析
2013/11/13 PHP
小谈php正则提取图片地址
2014/03/27 PHP
在laravel中使用with实现动态添加where条件
2019/10/10 PHP
javascrpt绑定事件之匿名函数无法解除绑定问题
2012/12/06 Javascript
node.js中的fs.fchown方法使用说明
2014/12/16 Javascript
JavaScript实现的经典文件树菜单效果
2015/09/08 Javascript
JS实现自动变化的导航菜单效果代码
2015/09/09 Javascript
jQuery zclip插件实现跨浏览器复制功能
2015/11/02 Javascript
浅谈jQuery中ajaxPrefilter的应用
2016/08/01 Javascript
js实现抽奖效果
2017/03/27 Javascript
xmlplus组件设计系列之图标(ICON)(1)
2017/05/05 Javascript
详解webpack2+React 实例demo
2017/09/11 Javascript
从零开始用electron手撸一个截屏工具的示例代码
2018/10/10 Javascript
JavaScript变量基本使用方法实例分析
2019/11/15 Javascript
微信浏览器下拉黑边解决方案 wScroollFix
2020/01/21 Javascript
js实现圆形显示鼠标单击位置
2020/02/11 Javascript
js实现拾色器插件(ColorPicker)
2020/05/21 Javascript
你不知道的 TypeScript 高级类型(小结)
2020/08/28 Javascript
详解ES6 扩展运算符的使用与注意事项
2020/11/12 Javascript
Python写的创建文件夹自定义函数mkdir()
2014/08/25 Python
使用python 爬虫抓站的一些技巧总结
2018/01/10 Python
python 用lambda函数替换for循环的方法
2018/06/09 Python
详解python的super()的作用和原理
2020/10/29 Python
html5 canvas 简单画板实现代码
2012/01/05 HTML / CSS
Amcal中文官网:澳洲综合性连锁药房
2019/03/28 全球购物
Footshop罗马尼亚:最好的运动鞋选择
2019/09/10 全球购物
德国最大的婴儿用品网上商店:Kidsroom.de(支持中文)
2020/09/02 全球购物
贷款委托书范本
2014/04/08 职场文书
领导班子三严三实心得体会
2014/10/13 职场文书
护士长2014年终工作总结
2014/11/11 职场文书
自荐信格式范文
2015/03/04 职场文书
暂住证证明
2015/06/19 职场文书
2015年卫生院健康教育工作总结
2015/07/24 职场文书
导游词之寿县报恩寺
2020/01/19 职场文书
PyTorch dropout设置训练和测试模式的实现
2021/05/27 Python
Python中else的三种使用场景
2021/06/16 Python