PHP 获取两个日期相差多少年,多少月,多少天,多少小时,并填充数组
PHP 获取两个日期相差多少年,多少月,多少天,多少小时,并填充数组
<?php /**
* 获取两个日期相差多少年,多少月,多少天,多少小时,并填充数组
* @param [type] $startTime [开始日期,如:2018-02-10 10:00]
* @param [type] $endTime [结束日期,如:2018-03-01 15:00]
* @param integer $type [单位类型:1小时,2天,3月,4年]
* @return [type] [description]
*/
function getTimesRange($startTime, $endTime, $type = 1)
{
$timeRange = []; $diffRange = diffBetweenTwoDate($startTime, $endTime, $type); switch ($type) {
case 1:
$timeRange[] = date('Y-m-d H:00', strtotime($startTime));
for ($i = 1; $i <= $diffRange['hours']; $i++) {
$timeRange[] = date('Y-m-d H:00', strtotime( date('Y-m-d H:00', strtotime($startTime))
. "+ " . $i . " hours"));
}
break; case 2:
$timeRange[] = date('Y-m-d', strtotime($startTime)); for ($i = 1; $i <= $diffRange['day']; $i++) {
$timeRange[] = date('Y-m-d', strtotime( date('Y-m-d', strtotime($startTime))
. "+ " . $i . " day"));
}
break; case 3:
$timeRange[] = date('Y-m', strtotime($startTime));
for ($i = 1; $i <= $diffRange['month']; $i++) {
$timeRange[] = date('Y-m', strtotime( date('Y-m', strtotime($startTime))
. "+ " . $i . " month"));
}
break; case 4:
$timeRange[] = intval(date('Y', strtotime($startTime)));
for ($i = 1; $i <= $diffRange['year']; $i++) {
$timeRange[] = date('Y', strtotime($startTime)) + $i;
}
break;
}
return $timeRange;
}
/**
* 获取两个日期相差多少年,多少月,多少天,多少小时
* @param [type] $startTime [开始日期,如:2018-02-10 10:00]
* @param [type] $endTime [结束日期,如:2018-03-01 15:00]
*/
function diffBetweenTwoDate($dateOne, $dateTwo)
{
$strtoDateOne = strtotime($dateOne);
$strtoDateTwo = strtotime($dateTwo);
if ($strtoDateOne < $strtoDateTwo) {
$tmp = $strtoDateTwo;
$strtoDateTwo = $strtoDateOne;
$strtoDateOne = $tmp;
}
$dateMonthOne = explode('-', date('Y-m', $strtoDateOne));
$dateMonthTwo = explode('-', date('Y-m', $strtoDateTwo));
$diff = [];
$diff['hours'] = ($strtoDateOne - $strtoDateTwo) / (60 * 60);
$diff['day'] = ($strtoDateOne - $strtoDateTwo) / (60 * 60 * 24);
$diff['month'] = abs($dateMonthOne[0] - $dateMonthTwo[0]) * 12 + abs($dateMonthOne[1] - $dateMonthTwo[1]);
$diff['year'] = date('Y', $strtoDateOne) - date('Y', $strtoDateTwo);
return $diff;
}
// 获取两个时间范围,年月日时,并填充数据
$timesRange = getTimesRange('2018-2-10 10:00', '2019-03-01 15:00', 3);
var_dump($timesRange);
// 获取两个时间范围,年月日时
$timesRangeCount = diffBetweenTwoDate('2018-2-10 10:00', '2019-03-01 15:00');
var_dump($timesRangeCount);
PHP 获取两个日期相差多少年,多少月,多少天,多少小时,并填充数组的更多相关文章
- js 获取两个日期相差的天数--自定义方法
//获取两个日期的相差天数 datedifference=function(sDate1, sDate2) { var dateSpan, tempDate, iDays; sDate1 = Date ...
- java 获取两个日期相差的毫秒数
方法一可以使用date的getTime()方法来将当前日期格式的时间转换为毫秒数,进而相减. long systime = new Date().getTime();//当前系统时间 l ...
- MySQL计算两个日期相差的天数、月数、年数
MySQL自带的日期函数TIMESTAMPDIFF计算两个日期相差的秒数.分钟数.小时数.天数.周数.季度数.月数.年数,当前日期增加或者减少一天.一周等等. SELECT TIMESTAMPDIFF ...
- 【zc】 php计算两个日期相隔多少年,多少月,多少日的函数
/* *function:计算两个日期相隔多少年,多少月,多少天 *数据接受格式: '2014-12-03','2000-12-01'; *param string $date1[格式如:2011-1 ...
- java7与java8中计算两个日期间隔多少年多少月多少天的实现方式
最近工作中碰到个新需求,计算每个员工入职公司的时长,要求形式为多少年多少月多少天形式,某个值为0就跳过不显示,因为前段时间学习过java8新特性,对于这个需求,java8的新时间日期API可以直接解决 ...
- Java 获取两个日期之间的日期
1.前期需求,两个日期,我们叫他startDate和endDate,然后获取到两个日期之间的日期 /** * 获取两个日期之间的日期 * @param start 开始日期 * @param end ...
- php计算两个日期相差 年 月 日
在PHP程序中,很多时候都会遇到处理时间的问题,比如:判断用户在线了多长时间,共登录了多少天,两个帖子发布的时间差或者是不同操作之间的日志记录等等.在文章中,简单地举例介绍了PHP中如何计算两个日期相 ...
- js计算2个日期相差的天数,两个日期相差的天数,日期相隔天数
js计算2个日期相差的天数,两个日期相差的天数,日期相隔天数 >>>>>>>>>>>>>>>>>& ...
- java计算两个日期相差多少天
java计算两个日期相差多少天 public class DateUtil{ public static int betweenDays(Date startDate, Date endDate ) ...
随机推荐
- Java:HashTable类小记
Java:HashTable类小记 对 Java 中的 HashTable类,做一个微不足道的小小小小记 概述 public class Hashtable<K,V> extends Di ...
- [Beta]the Agiles Scrum Meeting 7
会议时间:2020.5.21 20:00 1.每个人的工作 今天已完成的工作 成员 已完成的工作 issue yjy 暂无 tq 新增功能:添加.选择.展示多个评测机,对新增功能进行测试 评测部分增加 ...
- rabbitmq死信队列和延时队列的使用
死信队列&死信交换器:DLX 全称(Dead-Letter-Exchange),称之为死信交换器,当消息变成一个死信之后,如果这个消息所在的队列存在x-dead-letter-exchange ...
- GT考试
比较神仙的$dp+KMP+Matrix$综合题目,比较值得一写 $0x00$:首先我打了一个爆搜 不过对正解并无任何启发...(逗比发言请忽略) $0x01$:基础$dp$ 状态还是比较好设的, 考虑 ...
- Noip模拟5 2021.6.7
T1 string(线段树优化) 看到数据范围就必须要想到优化,那么如何把26×M∗N 的复杂度降低呢?? 用到那个我们最不想打的数据结构--线段树...... 然而,这个线段树与往常不同,他只需要用 ...
- BF算法和KMP算法
这两天复习数据结构(严蔚敏版),记录第四章串中的两个重要算法,BF算法和KMP算法,博主主要学习Java,所以分析采用Java语言,后面会补上C语言的实现过程. 1.Brute-Force算法(暴力法 ...
- Java 将Excel转为et和ett格式
以.et结尾的文件格式是属于金山办公软件WPS Office中的电子表格文件,.ett是一种模板文件格式.除了通过WPS软件可以创建该格式的电子表格外,也可以通过格式转换的方法来获得,如将Micros ...
- 最短路spaf及dijkstra模板
spaf的双端队列优化: #include<bits/stdc++.h> #define ll long long const ll maxn=210000; using namespac ...
- hdu 5092 Seam Carving (简单数塔DP,题没读懂,,不过可以分析样例)
题意: 给一个m*n的矩阵,每格上有一个数. 找从第1行到第m行的一条路径,使得这条路径上的数之和最小. 路径必须满足相邻两行所选的两个数的纵坐标相邻(即一个格子必须是另一个格子的周围八个格子中的一个 ...
- hdu 5087 Revenge of LIS II (DP)
题意: N个数,求第二长上升子序列的长度. 数据范围: 1. 1 <= T <= 1002. 2 <= N <= 10003. 1 <= Ai <= 1 000 0 ...