简单粗暴 ⛽️
获取当天的开始时间与结束时间
// 当天开始时间
$start_time = strtotime(date("Y-m-d", time())); // 1620662400
// 当天结束时间
$end_time = $start_time + 60 * 60 * 24 - 1; // 1620748799
var_dump(
date("Y-m-d H:i:s", $start_time), // 2021-05-11 00:00:00
date("Y-m-d H:i:s",$end_time) // 2021-05-11 23:59:59
);
获取指定时间的之前或之后的时间戳
$time = time();
// 前两天
strtotime("-2 day", $time);
// 前两个礼拜
strtotime("-2 week", $time);
// 前两个月
strtotime("-2 month", $time);
// 前两年
strtotime("-2 year", $time);
// strtotime() 第二个参数 $time 如果不传,默认以当前时间计算
// 可以将 '-2 day' 变为 '+2 day' ,就变成获取后两天的时间了
获取倒计时描述
/**
* 获取倒计时描述
* @link 原文作者请留言
* @param [Integer] $start_time 开始时间时间戳
* @param [Integer] $end_time 结束时间时间戳
* @return [string] $mag 倒计时展示
*/
function getCountDown($start_time, $end_time) {
$mag = "";
if ($start_time > time()) {
$ga = date("w");
switch ($ga) {
case 1 : $zh = date("Y-m-d", strtotime("+6 day"));
break;
case 2 : $zh = date("Y-m-d", strtotime("+5 day"));
break;
case 3 : $zh = date("Y-m-d", strtotime("+4 day"));
break;
case 4 : $zh = date("Y-m-d", strtotime("+3 day"));
break;
case 5 : $zh = date("Y-m-d", strtotime("+2 day"));
break;
case 6 : $zh = date("Y-m-d", strtotime("+1 day"));
break;
case 7 : $zh = date("Y-m-d");
break;
}
$xz = strtotime($zh) + 3600 * 24 * 7;
$weekarray = array("日", "一", "二", "三", "四", "五", "六", "日");
if (date('Y-m-d', $start_time) == date("Y-m-d")) {
$mag = '今天 ' . date('H:i', $start_time) . ' 开始';
} else if (date("Y-m-d", strtotime("+1 day")) == date("Y-m-d", $start_time)) {
$mag = '明天 ' . date('H:i', $start_time) . ' 开始';
} else if (date("Y-m-d", strtotime("+1 day")) == date("Y-m-d", $start_time)) {
$mag = '明天 ' . date('H:i', $start_time) . ' 开始';
} else if (date("Y-m-d", strtotime("+2 day")) == date("Y-m-d", $start_time)) {
$mag = '后天 ' . date('H:i', $start_time) . ' 开始';
} else if ($w < 5 && strtotime($zh) >= strtotime(date("Y-m-d", $start_time))) {
$mag = '本周' . $weekarray[date('w', $start_time)] . ' ' . date('H:i', $start_time) . ' 开始';
} else if ($xz >= strtotime(date("Y-m-d", $start_time))) {
$mag = '下周' . $weekarray[date('w', $start_time)] . ' ' . date('H:i', $start_time) . ' 开始';
} else {
$mag = date('m-d H:i', $start_time) . ' 开始';
}
} else {
if($end_time- time()<=0){
$mag = ' 已经结束';
}else if ($end_time - time() <= 3600 * 24 * 10) {
$mag = $this->time_ago($end_time) . ' 后结束';
} else {
$mag = date('m-d H:i', $end_time) . ' 结束';
}
}
return $mag;
}
计算两个日期的数字差(年月日时分秒)
/**
* 计算两个日期的数字差(年月日时分秒)
* @param [string] $date1 [格式: 2020-05-20]
* @param [string] $date2 [格式: 2020-08-21]
* @return [array] [格式: array('y'=>'00','m'=>'3','d'=>'1','h'=>00','i'=>0','s'=>'0','a'=>'93')]
*/
function diffDate($date1,$date2)
{
$datetime1 = new \DateTime($date1);
$datetime2 = new \DateTime($date2);
$interval = $datetime1->diff($datetime2);
$time['y'] = $interval->format('%Y'); // 年
$time['m'] = $interval->format('%m'); // 月
$time['d'] = $interval->format('%d'); // 日
$time['h'] = $interval->format('%H'); // 小时
$time['i'] = $interval->format('%i'); // 分钟
$time['s'] = $interval->format('%s'); // 秒
$time['a'] = $interval->format('%a'); // 两个时间相差总天数
return $time;
}
时间计算, 几年前、几个月前 (年,月,日,时,分,秒)
/**
* 时间计算, 几年前、几个月前 (年,月,日,时,分,秒)
* @link(Young-杨, https://blog.csdn.net/vailook/article/details/54133449)
* @param [Integer] $time 对比时间
* @param [String]
*/
function format_date($time){
$t=time()-$time;
$f=array(
'31536000'=>'年',
'2592000'=>'个月',
'604800'=>'星期',
'86400'=>'天',
'3600'=>'小时',
'60'=>'分钟',
'1'=>'秒'
);
foreach ($f as $k=>$v) {
if (0 !=$c=floor($t/(int)$k)) {
return $c.$v.'前';
}
}
}
PHP 两个日期(时间段) 之间的日期数组
/**
* PHP 两个日期(时间段) 之间的日期数组
* @link(路过火车, https://blog.csdn.net/weixin_42362496/article/details/85204596)
* @param [string] $start_time 对比时间 2020-10-10
* @param [string] $end_time 结束时间 2020-10-20
* @param [array]
*/
function periodDate($start_time,$end_time){
$start_time = strtotime($start_time);
$end_time = strtotime($end_time);
$i=0;
while ($start_time<=$end_time){
$arr[$i]=date('Y-m-d',$start_time);
$start_time = strtotime('+1 day',$start_time);
$i++;
}
return $arr;
}