分享编程~
 

PHP日期时间戳互转日期时间差计算日周月年

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]);
}


上一篇:JavaScript中substring() 方法截取字符串详解下一篇:php数组、字符串写入php文件中
赞(1) 踩(0)
您说多少就多少,您的支持是我最大的动力
赏金
微 信
赏金
支付宝
本文连接: https://www.yj521.com/article/108.html
版权声明: 本文为原创文章,版权归《越加网》所有,分享转载请注明出处!