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 ) ...
随机推荐
- [no_code][Beta]发布声明报告
$( "#cnblogs_post_body" ).catalog() 软件下载 一个全新的超简易的OCR表单识别工具 轻松拍照,实现手写表格识别 一键打开,支持多种应用打开你的表 ...
- [对对子队]会议记录5.18(Scrum Meeting5)
今天已完成的工作 何瑞 工作内容:搭建第8关 相关issue:搭建关卡7.8.9 相关签入:feat:初步搭建了Lv8 吴昭邦 工作内容:搭建第8关 相关issue:搭建关卡7.8 ...
- 主仆见证了 Hobo 的离别 题解
前言: 题面挺神仙.反正我考试的时候看了40分钟也没看懂. 后来改题感觉自己写的挺假,没想到加个\(k==1\)的特判竟然就A了?无语力. 解析: 看懂题以后就好说了.首先这显然是一个树形结构.我们考 ...
- cf Make It Nondeterministic (简单贪心)
有N个人.每个人都有两个名字. 给出这N个人的一个排列.p[1]...p[N]. 现在让每个人挑自己丙个名字中的一个名字.问是否存在一种方案,使得挑出来的N个名字按字典序排完以后正好是p[1]...p ...
- linux 内核源代码情景分析——linux 内核源码中的汇编语言代码
1. 用汇编语言编写部分核心代码的原因: ① 操作系统内核中的底层程序直接与硬件打交道,需要用到一些专用的指令,而这些指令在C语言中并无对应的语言成分: ② CPU中的一些特殊指令也没有对应的C语言成 ...
- Redis INFO CPU 信息详解
一.INFO CPU 通过INFO CPU命令可以查看Redis进程对于CPU的使用情况,如下: 这几个字段的含义如下所示: used_cpu_sys: System CPU consumed by ...
- fork()和vfork()的区别,signal函数用法,exec()系列函数的用法小结
一:fork()和vfork()的区别: fork()函数可以创建子进程,有两个返回值,即调用一次返回两个值,一个是父进程调用fork()后的返回值,该返回值是刚刚创建的子进程的ID;另一个是子 ...
- Flink 实践教程 - 入门(4):读取 MySQL 数据写入到 ES
作者:腾讯云流计算 Oceanus 团队 流计算 Oceanus 简介 流计算 Oceanus 是大数据产品生态体系的实时化分析利器,是基于 Apache Flink 构建的具备一站开发.无缝连接. ...
- python调试出现报错:SyntaxError: (unicode error) 'utf-8' codec can't decode byte 0xb0 in position 9: invalid start byte
原因:如图,代码里字符串里加上汉字就会报相关错误: 解决办法:开头加上 #-*-coding:GBK -*- 即可解决
- webpack 之js兼容性处理
webpack 之js兼容性处理 // 用来拼接绝对路径的方法 const {resolve} = require('path') const HtmlWebpackPlugin = require( ...