时间工具

作者: 会长__ | 来源:发表于2018-11-14 21:14 被阅读96次
<?php
/**
 * User: yuzhao
 * CreateTime: 2018/10/30 上午11:58
 * Email: shixi_yuzhao@staff.weibo.com
 * Description: 时间工具类
 */

class TimeTool {

    /**
     * User: yuzhao
     * CreateTime: 2018/11/14 上午11:20
     * @var
     * Email: shixi_yuzhao@staff.weibo.com
     * Description: 统一时间
     */
    private $time=0;

    /**
     * User: yuzhao
     * CreateTime: 2018/11/14 上午11:25
     * @var
     * Email: shixi_yuzhao@staff.weibo.com
     * Description:  当前对象
     */
    private static $myself;

    /**
     * TimeTool constructor.
     */
    public function __construct($time)
    {
        $this->time = $time;
    }

    /**
     * User: yuzhao
     * CreateTime: 2018/11/14 上午11:20
     * Email: shixi_yuzhao@staff.weibo.com
     * Description: 单例模式返回当前对象
     */
    public static function instance($time=null) {
        if (self::$myself === null || (self::$myself->time !== $time && $time!==null)) {
            self::$myself = new TimeTool($time);
        }
        return self::$myself;
    }

    /**
     * User: yuzhao
     * CreateTime: 2018/10/30 下午2:42
     * @return array
     * Email: shixi_yuzhao@staff.weibo.com
     * Description: 获取时间基本信息
     */
    public function getTimeBaseInfo() {
        return array(
            // 当前时间
            'now_time'  => $this->time,
            'ymd'       => date('Ymd', $this->time),
            'today_week'=> $this->getTodayWeek()
        );
    }

    /**
     * User: yuzhao
     * CreateTime: 2018/11/14 上午10:31
     * @param $day
     * @param string $format
     * @return mixed
     * Email: shixi_yuzhao@staff.weibo.com
     * Description: 获取本周日期
     */
    public function getNowWeekDay($day, $format = "Ymd") {
        $day--;
        $week = date('w', $this->time);
        //星期日排到末位
        if(empty($week)){
            $week=7;
        }
        return date($format,strtotime( '+' . $day+1-$week .' days',$this->time));
    }

    /**
     * User: yuzhao
     * CreateTime: 2018/11/7 上午10:51
     * @return false|int
     * Email: shixi_yuzhao@staff.weibo.com
     * Description: 获取上一周的某一天
     */
    public function getLastWeekDay($day,$format='Ymd') {
        $day--;
        $week = date('w', $this->time);
        //星期日排到末位
        if(empty($week)){
            $week=7;
        }
        return date($format,strtotime( '+' . $day+1-$week-7 .' days',$this->time));
    }

    /**
     * User: yuzhao
     * CreateTime: 2018/11/13 下午11:37
     * Email: shixi_yuzhao@staff.weibo.com
     * Description: 后去今天是星期几
     */
    public function getTodayWeek() {
        return date("w", $this->time);
    }

    /**
     * User: yuzhao
     * CreateTime: 2018/11/7 上午10:52
     * Email: shixi_yuzhao@staff.weibo.com
     * Description: 获取今天的开始时间
     */
    public function getTodayStart() {
        return mktime(0,0,0,date('m'),date('d'),date('Y'));
    }

    /**
     * User: yuzhao
     * CreateTime: 2018/11/7 上午10:52
     * Email: shixi_yuzhao@staff.weibo.com
     * Description: 获取今天的结束时间
     */
    public static function getTodayEnd() {
        return mktime(0,0,0,date('m'),date('d')+1,date('Y'))-1;
    }

    /**
     * User: yuzhao
     * CreateTime: 2018/11/7 上午10:55
     * @return false|string
     * Email: shixi_yuzhao@staff.weibo.com
     * Description: 获取任务名
     */
    public static function getNowWeekStartTime() {
       return date('Ymd', (time() - ((date('w') == 0 ? 7 : date('w')) - 1) * 24 * 3600));
    }

    /**
     * User: yuzhao
     * CreateTime: 2018/11/14 上午11:44
     * @param $day1
     * @param $day2
     * @return float|int
     * Email: shixi_yuzhao@staff.weibo.com
     * Description: 获取两个日期相差的天数
     */
    public static function diffBetweenTwoDays ($day1, $day2) {
        $second1 = strtotime($day1);
        $second2 = strtotime($day2);
        if ($second1 < $second2) {
            $tmp = $second2;
            $second2 = $second1;
            $second1 = $tmp;
        }
        return ($second1 - $second2) / 86400;
    }
}

相关文章

  • 时间工具

  • 工具&时间

    工具 工具和人的关系,很有意思的话题。当然啦,最后的结论肯定是人会选择工具,工具又反过来塑造人。但是我想说的是,工...

  • 时间工具类

    package com.zymotor.eutech.web.util; import org.springfra...

  • 时间工具类

    1.本周开始时间戳 - 以星期一为本周的第一天 public static String getWeekStart...

  • 时间工具类

    package com.liumu.util; import java.sql.Timestamp; import...

  • 时间工具类

    去除时间的时分秒

  • 自我管理的29个工具(PPT版)

    工具1 用“四象限原理”规划时间 工具2 用80/20法则分配时间 工具3 用“ABC控制法”使用时间 工具4 用...

  • Unix时间戳--时间工具类

    工作之余写的一个关于Unix时间的工具 UnixTime.m文件包含方法的具体实现,用法都在.h文件里写了

  • #工具# 时间管理

    时间就是金钱,白驹过隙,弹指一挥间,关于时间金贵的语句实在太多,人生不过一张A4纸的长度。都说时间是世上最公平的的...

  • 时间工具类总结

    默认: 1、比较年月日时分秒的字符串的大小20180315100900 2.获取当前毫秒值时间 3. 4.

网友评论

    本文标题:时间工具

    本文链接:https://www.haomeiwen.com/subject/sissfqtx.html