zoukankan      html  css  js  c++  java
  • 公共方法整合(三)时间相关方法

    同样是方法整合类型

    不过本篇主要存储的是一些关于时间操作类型的公共方法

    方法目录:

    1. 获取两个时间之间相差的年、月、日、时、分、秒及总天数
    2. 根据时间获取对应当年多少周
    3. 计算当年有多少周
    4. 获取指定周的开始时间与结束时间
    5. 根据时间戳获取是几秒钟、几分钟...前
    6. 获取对应 GMT/UTC 日期和时间

    1.获取两个时间之间相差的年、月、日、时、分、秒及总天数

    方法如下:

    /**
     * 获取两个时间之间相差的年、月、日、时、分、秒及总天数
     * @param  [type] $str 开始时间
     * @param  [type] $end 结束时间
     * @return [type]      返回数据集
     */
    function diffTime($str,$end)
    {
        $str = new DateTime($str);
        $end = new DateTime($end);
        $res = $str->diff($end);
    
        $return['y'] = $res->format('%Y');   #
        $return['m'] = $res->format('%m');   #
        $return['d'] = $res->format('%d');   #
        $return['h'] = $res->format('%h');   #
        $return['i'] = $res->format('%i');   #
        $return['s'] = $res->format('%s');   #
        $return['a'] = $res->format('%a');   #总天数
    
        return $return;
    }
    
    #调用测试
    $str = '2020-01-01 12:00:00';
    $end = '2015-05-20 22:10:22';
    $res = diffTime($str,$end);
    
    echo "<pre>";
    print_r($res);
    die;

    结果如下:

    Array
    (
        [y] => 04
        [m] => 7
        [d] => 11
        [h] => 13
        [i] => 49
        [s] => 38
        [a] => 1686
    )

    2020年08月28日


    2.根据时间获取对应当年多少周

    方法如下:

            $res = intval(date('W',strtotime('2020-08-28')));  #获取第几周
            echo $res;

    结果如下:

    35

    2020年08月28日


    3.计算当年有多少周

    方法如下:

    /**  
    * 计算一年有多少周,每周从星期一开始,  
    * 如果最后一天在周四后(包括周四)算完整的一周,否则不计入当年的最后一周  
    * 如果第一天在周四前(包括周四)算完整的一周,否则不计入当年的第一周  
    * @param int $year  
    * return int  
    */   
    function week($year)
    {   
        $year_start = mktime(0,0,0,1,1,$year);   
        $year_end = mktime(0,0,0,12,31,$year);   
        if (intval(date('W',$year_end))===1){   
            return date('W',strtotime('last week',$year_end));   
        }else{   
            return date('W',$year_end);   
        }   
    }   
    
        #调用测试
        $res = week(date('Y'));
        echo $res;

    结果如下:

    53

    2020年08月28日


    4.获取指定周的开始时间与结束时间

    方法:

    /** 
    * 获取某年第几周的开始日期和结束日期 
    * @param int $year 
    * @param int $week 第几周; 
    */ 
    function weekday($year,$week=1)
    { 
        $year_start = mktime(0,0,0,1,1,$year); 
        $year_end = mktime(0,0,0,12,31,$year); 
    
        // 判断第一天是否为第一周的开始 
        if (intval(date('W',$year_start))===1)
        {
            $lastday=date("Y-m-d",strtotime(date('Y-m-d',$year_start)." Sunday"));
            $start=strtotime(date("Y-m-d",strtotime($lastday."-6 days"))); 
        //$start = $year_start;//把第一天做为第一周的开始 
        }else{ 
            $start = strtotime('+1 monday',$year_start);//把第一个周一作为开始 
        } 
    
        // 第几周的开始时间 
        if ($week==1){ 
            $weekday['start'] = $start; 
        }else{ 
            $weekday['start'] = strtotime($week.' monday',$start); 
        } 
    
        // 第几周的结束时间 
        $weekday['end'] = strtotime('+1 sunday',$weekday['start']); 
        if (date('Y',$weekday['end'])!=$year)
        { 
            $weekday['end'] = $year_end; 
        } 
        return $weekday; 
        // return date('m.d',$weekday['start']).'-'.date('m.d',$weekday['end']);
    } 
        #调用测试
        $res = weekday(date('Y'),'35');
        echo "<pre>";
        print_r($res);

    结果如下:

    Array
    (
        [start] => 1598198400
        [end] => 1598716800
    )

    此方法可根据自己需要转换为自己需要的格式

    此方法原来并不支持跨年,在此为博主大大的改动下可以的,

    原来我是看到评论才找到这篇的,最开始不支持跨年的并未有记录,抱歉

    原博主地址:

     曉笙通幽  : https://www.cnblogs.com/lin-er/p/11295653.html#4589275

    2020年08月28日


    5.根据时间戳获取是几秒钟、几分钟...前

    方法:

    /**
     * 根据时间戳获得是几秒钟、几分钟..前
     * @param  [type] $time 对应时间戳
     * @return [type]       对应返回
     */
    function format_date($time)
    {
        $t=time()-$time; 
        //<span style="white-space:pre">    </span>//echo 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.'前'; 
            } 
        } 
    } 
        #测试调用
        $res = format_date(time()-10);
        echo "<pre>";
        print_r($res);

    调用结果:

    10秒前

    原文地址:

    蓦然回首恍然如梦 : https://www.cnblogs.com/bluealine/p/7884519.html

    方法二:

    /**
     * 根据时间戳获得是几分钟,几秒钟,之前
     * @param  [type] $addtime [description]
     * @return [type]          [description]
     */
    function  getzpinfotime($addtime)
    {
        $times = time()-$addtime;
        if($times < 60)
        {
            $trim = $times."秒前";
        }
        elseif($times < 3600 && $times>60)
        {
            $trim = ceil($times/60)."分钟前";
        }
        elseif($times < 86400 && $times > 3600)
        {
            $trim = ceil($times/3600)."小时前";
        }
        else if($times < 604800 && $times > 86400)
        {
            $trim = ceil($times/86400)."天前";
        }
        else if($times < 2592000 && $times > 604800)
        {
            $trim = ceil($times/604800)."周前";
        }
        else if($times < 31536000 && $times > 2592000)
        {
            $trim = ceil($times/2592000)."月前";
        }
        else{
            $trim = ceil($times/31536000)."年前";
        }
        return $trim;
    }

    2020年08月28日


     6.获取对应GMT/UTC 日期和时间

    方法函数如下:

            
            #方法一
            date_default_timezone_set("GMT");
            $Timestamp = date("Y-m-dTH:i:s");
            #方法二
            $Timestamp = gmdate("Y-m-dTH:i:s");

    2020年09月08日

    方法持续更新中...

    没有谁是离不开谁的,只是愿意不愿意罢了...

    2020年08月27日

    时间会冲淡一切,不管你承认不承认,这个是事实。。

    2020年09月08日

  • 相关阅读:
    QT5编程入门教程
    bstr_t与BSTR
    Android Studio 更改APP图标
    Indy服务器关闭所有客户端连接
    使用高德地图API
    内网渗透——Hadoop未授权访问getshell
    内网渗透——struts2远程任意代码执行(s2-046)
    工具使用——cobalt strike使用
    工具使用——docker使用
    漏洞复现——weblogic任意文件上传(cve-2018-2894)
  • 原文地址:https://www.cnblogs.com/YFYQ/p/13578189.html
Copyright © 2011-2022 走看看