PHP中日期和时间戳互转,两时间段相差天数,取前几天和未来几天方式,获取13位时间戳等
获取日期时间戳
获取当前时间戳:time() //10位时间戳
获取当前日期:date('Y-m-d H:i:s') //连接符可以随便写 '-' , '/' 等,具体参数查看php日期date函数详解
获取当前13位时间戳:echo getTime13(); //自定义方法
function getTime13() {
list($t1, $t2) = explode(' ', microtime());
return (float)sprintf('%.0f',(floatval($t1)+floatval($t2))*1000);
}
获取3位毫秒数:getMillisecond(); // 自定义方法
function getMillisecond(){
list($usec, $sec) = explode(" ", microtime());
$msec=round($usec*1000);
return sprintf('d',$msec);
}
日期转时间戳:strtotime(date("Y/m/d"));
时间戳转日期:date('Y-m-d',time());
获取日期相关
当前时间加一天数时间戳:strtotime("+1 day"); // 当前时间戳+1天
当前时间减一天数时间戳:strtotime("-1 day"); // 当前时间戳-1天
当期日期加减天数:echo date("Y-m-d H:i:s",strtotime("+1 day")) ; // 当前日期加1天
当前日期加一周: date("Y-m-d H:i:s",strtotime("+1 week"));
当期日期加一个月:date("Y-m-d H:i:s",strtotime("+1 month"));
当期日期加一年:date("Y-m-d H:i:s",strtotime("+1 year"));
当前时间减去12小时:date("Y-m-d H:i:s",strtotime("-12 hour"));
指定日期减去一个月:date('Y-m-d', strtotime("2020-07-18 -1 month")); // 获得2020-06-18
下个星期日:date("Y-m-d H:i:s",strtotime("next Sunday")); //注意一周的开始时间为周日
上一个星期日:date("Y-m-d H:i:s",strtotime("Previous Sunday"));
示例:
$startDate="2020-07-11 11:49:00";
$endDate = "2020-07-12 10:45:09";
两个时间相差天数:floor((strtotime($endDate)-strtotime($startDate))/86400);
两个时间相差小时:floor((strtotime($endDate)-strtotime($startDate))/3600);
两个时间相差分钟:floor((strtotime($endDate)-strtotime($startDate))/60);
两个时间相差秒:floor((strtotime($endDate)-strtotime($startDate)));
本周日:echo date('Y-m-d', (time() + ((date('w') == 0 ? 7 : date('w'))) * 24 * 3600)); //w为星期几的数字形式,0为周日,每周第一天为周日
本周一:date('Y-m-d', (time() - ((date('w') == 0 ? 1 : date('w')) - 1) * 24 * 3600));
如果每周从周一开始周日结束,获取上周一到周日:
开始:date('Y-m-d', (time() - (((date('w') == 0 ? 1 : date('w')) - 1)+7) * 24 * 3600))
结束:date('Y-m-d', (time() - (((date('w') == 0 ? 0 : date('w')))) * 24 * 3600))
如果每周从周日开始周六结束,获取上周日到周六:
开始: date('Y-m-d', (time() - (((date('w') == 0 ? 1 : date('w')) - 1)+8) * 24 * 3600));
结束: date('Y-m-d', (time() - (((date('w') == 0 ? 0 : date('w')))+1) * 24 * 3600));
获取上个月1号到上个月最后一天:
开始:date('Y-m-01 00:00:00',strtotime('-1 month'));
结束:date('Y-m-d 23:59:59',strtotime(-date('d').'day'));
获取去年整年:
开始:date('Y-01-01 00:00:00', strtotime("-1 year"));
结束:date('Y-12-31 23:59:59', strtotime("-1 year"));
/**
* 计算两个日期相差天数
* @param $day1
* @param $day2
*/
function diffBetweenTwoDays($day1, $day2)
{
$second1 = strtotime($day1);
$second2 = strtotime($day2);
if ($second1 < $second2) {
$tmp = $second2;
$second2 = $second1;
$second1 = $tmp;
}
return ($second1 - $second2) / 86400;
}
/**
* 计算两个日期相差月数
* @param $date1
* @param $date2
* @return float|int|mixed|string
*/
function getMonthNum($date1, $date2)
{
$date1_stamp = strtotime($date1);
$date2_stamp = strtotime($date2);
list($date_1['y'], $date_1['m']) = explode("-", date('Y-m', $date1_stamp));
list($date_2['y'], $date_2['m']) = explode("-", date('Y-m', $date2_stamp));
return abs($date_1['y'] - $date_2['y']) * 12 + $date_2['m'] - $date_1['m'];
}
/**
* 计算两个日期相差月数
* @param $date1
* @param $date2
*/
function getMonthNum( $date1, $date2, $tags='-' ){
$date1 = explode($tags,$date1);
$date2 = explode($tags,$date2);
return abs($date1[0] - $date2[0]) * 12 + abs($date1[1] - $date2[1]);
}