PHP几种常用的日期时间处理

热度:3672020-03-24 22:55 收藏 0 点赞 0

人性化时间显示

function formatTime($sTime, $formt = 'Y-m-d') {
  
    if (!$sTime) {
        return '';
    }
  
    //sTime=源时间,cTime=当前时间,dTime=时间差
    $cTime = time();
    $dTime = $cTime - $sTime;
    $dDay = intval(date('z',$cTime)) - intval(date('z',$sTime));
    $dYear = intval(date('Y',$cTime)) - intval(date('Y',$sTime));
  
    //n秒前,n分钟前,n小时前,日期
    if ($dTime < 60 ) {
        if ($dTime < 10) {
            return '刚刚';
        } else {
            return intval(floor($dTime / 10) * 10).'秒前';
        }
    } elseif ($dTime < 3600 ) {
        return intval($dTime/60).'分钟前';
    } elseif( $dTime >= 3600 && $dDay == 0  ){
        return intval($dTime/3600).'小时前';
    } elseif( $dDay > 0 && $dDay<=7 ){
        return intval($dDay).'天前';
    } elseif( $dDay > 7 &&  $dDay <= 30 ){
        return intval($dDay/7).'周前';
    } elseif( $dDay > 30 ){
        return intval($dDay/30).'个月前';
    } elseif ($dYear==0) {
        return date('m月d日', $sTime);
    } else {
        return date($formt, $sTime);
    }
}

今日开始和结束的时间戳 

$start = mktime(0, 0, 0, date('m'), date('d'), date('Y'));
$end = mktime(23, 59, 59, date('m'), date('d'), date('Y'));

昨日开始和结束的时间戳

$start = mktime(0, 0, 0, date('m'), date('d') - 1, date('Y'));
$end = mktime(23, 59, 59, date('m'), date('d') - 1, date('Y'));

本周开始和结束的时间戳 

$start = strtotime(date('Y-m-d', strtotime("this week Monday", time())));
$end = strtotime(date('Y-m-d', strtotime("this week Sunday", time()))) + 24 * 3600 - 1;

上周开始和结束的时间戳 

$start = strtotime(date('Y-m-d', strtotime("last week Monday", time())));
$end = strtotime(date('Y-m-d', strtotime("last week Sunday", time()))) + 24 * 3600 - 1;

本月开始和结束的时间戳 

$start = mktime(0, 0, 0, date('m'), 1, date('Y'));
$end = mktime(23, 59, 59, date('m'), date('t'), date('Y'));

上个月开始和结束的时间戳

$start = mktime(0, 0, 0, date('m') - 1, 1, date('Y'));
$end = mktime(23, 59, 59, date('m') - 1, date('t', $start), date('Y'));

今年开始和结束的时间戳

$start = mktime(0, 0, 0, 1, 1, date('Y'));
$end = mktime(23, 59, 59, 12, 31, date('Y'));

去年开始和结束的时间戳 

$start = mktime(0, 0, 0, 1, 1, date('Y') - 1);
$end = mktime(23, 59, 59, 12, 31, date('Y') - 1);

获取两个时间戳相差几天

function day_to_day($start,$end){
    $r = $end-$start;
    if($r<0){
        $day = -($r/86400);
        $day = ceil($day);
    }else{
        $day = ceil($r/86400);
    }
    return $day;
}

各种时间戳

//本周一
echo date('Y-m-d', (time() - ((date('w') == 0 ? 7 : date('w')) - 1) * 24 * 3600)); //w为星期几的数字形式,这里0为周日
 
 
//本周日
 
echo date('Y-m-d', (time() + (7 - (date('w') == 0 ? 7 : date('w'))) * 24 * 3600)); //同样使用w,以现在与周日相关天数算
 
 
//上周一
 
echo date('Y-m-d', strtotime('-1 monday', time())); //无论今天几号,-1 monday为上一个有效周未
 
 
//上周日
 
echo date('Y-m-d', strtotime('-1 sunday', time())); //上一个有效周日,同样适用于其它星期
 
 
//本月一日
 
echo date('Y-m-d', strtotime(date('Y-m', time()) . '-01 00:00:00')); //直接以strtotime生成
 
 
//本月最后一日
 
echo date('Y-m-d', strtotime(date('Y-m', time()) . '-' . date('t', time()) . ' 00:00:00')); //t为当月天数,28至31天
 
 
//上月一日
 
echo date('Y-m-d', strtotime('-1 month', strtotime(date('Y-m', time()) . '-01 00:00:00'))); //本月一日直接strtotime上减一个月
 
 
//上月最后一日
 
echo date('Y-m-d', strtotime(date('Y-m', time()) . '-01 00:00:00') - 86400); //本月一日减一天即是上月最后一日


暂无评论
登录后才可以评论~立即登录

如何获取资源?

您可以关注底部公众号,回复文章提示的 “ 关键词 ” 获取对应资源。

每日分享

每日分享收集的网络资源,其中包含开源项目、小工具、常用软件,以及音频视频、电子书籍等。

外卖天天领红包,饿了么,美团红包天天都有!

外卖天天领红包,饿了么,美团红...

最低每顿可省2元

分享两个远程工具-ToDesk和向日葵

分享两个远程工具-ToDesk和向日葵...

在工作生活中经常用到远程,QQ远程很卡,第三方远程工具就比较方便了。

爱奇艺万能播放器2018年完整版

爱奇艺万能播放器2018年完整版

2018年的爱奇艺万能播放器,功能齐全,没有广告!

分享500套个人求职简历模板

分享500套个人求职简历模板

500套免费求职简历下载!

一款最近很火的自动跳过广告APP,无root直装版

一款最近很火的自动跳过广告APP,...

自动跳过广告,无需root

WPS免费去广告电脑软件

WPS免费去广告电脑软件

wps广告实在太多了,下载一个去广告版本