PHP中查询指定时间范围内的所有日期,月份,季度,年份
/**
* 查询指定时间范围内的所有日期,月份,季度,年份
*
* @param $startDate 指定开始时间,Y-m-d格式
* @param $endDate 指定结束时间,Y-m-d格式
* @param $type 类型,day 天,month 月份,quarter 季度,year 年份
* @return array
*/
function getDateByInterval($startDate, $endDate, $type)
{
if (date('Y-m-d', strtotime($startDate)) != $startDate || date('Y-m-d', strtotime($endDate)) != $endDate) {
return '日期格式不正确';
} $tempDate = $startDate;
$returnData = [];
$i = 0;
if ($type == 'day') { // 查询所有日期
while (strtotime($tempDate) < strtotime($endDate)) {
$tempDate = date('Y-m-d', strtotime('+' . $i . ' day', strtotime($startDate)));
$returnData[] = $tempDate;
$i++;
}
} elseif ($type == 'month') { // 查询所有月份以及开始结束时间
while (strtotime($tempDate) < strtotime($endDate)) {
$temp = [];
$month = strtotime('first day of +' . $i . ' month', strtotime($startDate));
$temp['name'] = date('Y-m', $month);
$temp['startDate'] = date('Y-m-01', $month);
$temp['endDate'] = date('Y-m-t', $month);
$tempDate = $temp['endDate'];
$returnData[] = $temp;
$i++;
}
} elseif ($type == 'quarter') { // 查询所有季度以及开始结束时间
while (strtotime($tempDate) < strtotime($endDate)) {
$temp = [];
$quarter = strtotime('first day of +' . $i . ' month', strtotime($startDate));
$q = ceil(date('n', $quarter) / 3);
$temp['name'] = date('Y', $quarter) . '第' . $q . '季度';
$temp['startDate'] = date('Y-m-01', mktime(0, 0, 0, $q * 3 - 3 + 1, 1, date('Y', $quarter)));
$temp['endDate'] = date('Y-m-t', mktime(23, 59, 59, $q * 3, 1, date('Y', $quarter)));
$tempDate = $temp['endDate'];
$returnData[] = $temp;
$i = $i + 3;
}
} elseif ($type == 'year') { // 查询所有年份以及开始结束时间
while (strtotime($tempDate) < strtotime($endDate)) {
$temp = [];
$year = strtotime('+' . $i . ' year', strtotime($startDate));
$temp['name'] = date('Y', $year) . '年';
$temp['startDate'] = date('Y-01-01', $year);
$temp['endDate'] = date('Y-12-31', $year);
$tempDate = $temp['endDate'];
$returnData[] = $temp;
$i++;
}
}
return $returnData;
}
PHP中查询指定时间范围内的所有日期,月份,季度,年份的更多相关文章
- SQL Server中获取指定时间段内的所有日期
DECLARE @days INT, @date_start DATETIME = '2016-11-01', @date_end DATETIME = '2016-11-10' SET @days ...
- Oracle查询指定某一天数据,日期匹配
在做一个功能的时候,需要在oracle数据库中查询指定某一天的数据. 如果是简单的当前日期前后几天,也好办 AND TO_CHAR(Rct.Creation_Date, 'YYYY-MM-DD')=t ...
- Java产生指定范围内的随机日期
要想产生指定范围内的随机日期,首先我们要指定一个范围,那么我们可以通过SImpleDateFormat格式化日期,然后再通过parse()方法设置日期,返回一个Date类型的日期对象,再转化为时间戳( ...
- 巧用DISPLAY_AWR函数与dba_hist_sqlstat结合查询SQL语句在指定节点指定时间范围内的历史执行计划
1.问题 通过调用dbms_xplan包中DISPLAY_AWR函数(DBMS_XPLAN.DISPLAY_AWR)可以从AWR数据中查看到SQL语句的历史执行计划,但是,DISPLAY ...
- AM二次开发中选择指定范围内的对象
使用Spatial可以快速选择指定范围内的对象 例如下面的代码可以选择所有在[0,0,0]-[10m,10m,10m]这个盒子之内的对象: 其中ElementsInBox还可以指定对象类型做进一步筛选 ...
- SQL Server中获取指定时间段内的所有月份
例如查询 2012-1-5 到 2012-11-3 之间所有的月份 declare @begin datetime,@end datetime set @begin='2012-1-5' set @e ...
- ThinkPHP与EasyUI整合之三(searchbox):在datagrid中查询指定记录
在datagrid中toolbar添加searchbox查询框,根据列范围查询数据,先看效果图: 1. searchbox采用easyui的Demo例子,再加以js扩展,根据datagrid中的列数据 ...
- 数据库SQL语句查询指定时间段内的数据
[摘要]有的时候,我们需要查询数据库某段时间之间的数据,比如2016年5月1号到到5月3号之间用户注册数量(特殊节假日期间)等.那么用SQL语句如何实现呢? 首先,数据表中的存时间的字段比如是addt ...
- MongoDB 用MongoTemplate查询指定时间范围的数据
mongoDB大于小于符号对应: > 大于 $gt< 小于 $lt>= 大于等于 $gte<= 小于等于 $lte 要查询同一个时间多个约束可能出现的error: org.sp ...
随机推荐
- 使用gitolite搭建Git服务器
使用gitolite搭建Git服务器 运行环境 Ubuntu18.04 gitolite 搭建过程 安装好Ubuntu18.04系统 更新系统 sudo apt update sudo apt upg ...
- (办公)记事本_Linux目录和文件都能操作的命令
参考谷粒学院Linux:http://www.gulixueyuan.com/course/300/task/7082/show .cp 1.1.作用主要是拷贝,可以拷贝文件或者目录. 1.2.语法: ...
- CodeForces - 460C(二分+差分)
题意 https://vjudge.net/problem/CodeForces-460C 一个长度为 n 的序列 a ,你有 m 次操作的机会,每次操作是将其中连续的 w 个元素增加 1 .最大化最 ...
- A:mysql数据库章节导航
mysql数据库章节导航 mysql5.7的安装(yum和二进制安装) 数据库的基本操作 索引 权限管理 日志管理 逻辑备份mysqldump 物理备份:xtrabackup 主从复制-传统方式 主从 ...
- Object-defineProperty ES5
Object.defineProperty() 方法会直接在一个对象上定义一个新属性,或者修改一个对象的现有属性, 并返回这个对象. Object.defineProperty(obj, prop, ...
- IO 多路复用详解
转自:https://blog.csdn.net/sehanlingfeng/article/details/78920423
- MyBatis中@MapKey使用详解
MyBatis中@MapKey使用详解我们在上一篇文章中讲到在Select返回类型中是返回Map时,是对方法中是否存在注解@MapKey,这个注解我也是第一次看到,当时我也以为是纯粹的返回单个数据对象 ...
- 关于JVM、JRE、Jdk三者的定义与联系
许多初学者对于java中的JVM.JRE.JDK三者的定义与联系有些模糊,接下来我就根据我的理解来为各位解答一下,希望能帮到正在努力的你们. JVM JVM是Java Virtual Machin ...
- Windows下使用virtualenv创建虚拟环境
操作系统 : windowns10_x64Python版本:3.6.8virtualenv版本:16.7.7virtualenvwrapper版本:1.2.5 方式一:直接使用virtualenv 1 ...
- windowsServer---- 在iis 上安装网站
1.找到信息服务IIS 管理器如图: 2.进入后进行配置 3.添加本地网站 配置网站 如果域名没有解析的话,可以在添加一个 端口用于测试 点击浏览就行查看 如果报错 解决:找到目录浏览,并启动 点击 ...