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 ...
随机推荐
- SQL Server之批量清理数据库的死锁
DECLARE killspid CURSOR FOR (SELECT CONVERT(VARCHAR(100), request_session_id) FROM sys.dm_tran_l ...
- MongoDB 中聚合统计计算--$SUM表达式
我们一般通过表达式$sum来计算总和.因为MongoDB的文档有数组字段,所以可以简单的将计算总和分成两种:1,统计符合条件的所有文档的某个字段的总和:2,统计每个文档的数组字段里面的各个数据值的和. ...
- C# Distinct去重泛型List
List<int>去重 List<string>去重 List<T>去重 1. List<int>去重 List<int> ilist = ...
- Markdown语法教程
标题 # 一级标题 ## 二级标题 ### 三级标题 #### 四级标题 ##### 五级标题 ###### 六级标题 效果如下: 一级标题 二级标题 三级标题 四级标题 五级标题 六级标题 段落 换 ...
- 关于tomcat对编码不正确的url参数报错的解决
按照规范,url参数必须使用限定字符,其它字符需要进行编码,用像js的encodeurlcomponent函数. 在IE和360浏览器的兼容模式,不会自动对url的参数进行编码,会导致tomcat报错 ...
- Educational Codeforces Round 77 (Rated for Div. 2)
A: 尽可能平均然后剩下的平摊 #include <bits/stdc++.h> using namespace std; typedef long long ll; const int ...
- 用Go写完Hello World,一些需要注意的地方
序言 Go可是说是近几年比较火的语言了,目前版本已经到了1.13,如果说有其他语言的基础,学习Go还是挺简单的.这篇文章主要是总结一些,和其他语言可能会不一样的地方. 多返回值 之前如果一个方法像返回 ...
- Java变量在内存中的存储
目录 Java变量在内存中的存储 成员变量 局部变量 总结 Java变量在内存中的存储 以下探究成员变量和局部变量在内存中的存储情况. package com.my.pac04; /** * @aut ...
- 雪崩利器 hystrix-go 源码分析
阅读源码的过程,就像是在像武侠小说里阅读武功秘籍一样,分析高手的一招一式,提炼出精髓,来增强自己的内力. 之前的帖子说了一下微服务的雪崩效应和常见的解决方案,太水,没有上代码怎么叫解决方案.githu ...
- C#面向对象--封装
一.抽象和封装是面向对象编程的基础特性,抽象用来忽略细节,在不同的层次上处理细节,封装则实现了对细节的不同程度的访问权限:即抽象允许相关信息可视化,封装用来实现所需级别的抽象: 1.根据封装的原则,命 ...