时间或日期类汇总

将时间戳转换为日期时间

 /**
     * 将时间戳转换为日期时间
     * @param int    $time   时间戳
     * @param string $format 日期时间格式
     * @return string
     */
    function datetime($time, $format = 'Y-m-d H:i:s')
    {
        $time = is_numeric($time) ? $time : strtotime($time);
        return date($format, $time);
    }

获取语义化时间

 /**
     * 获取语义化时间
     * @param int $time  时间
     * @param int $local 本地时间
     * @return string
     */
    function human_date($time, $local = null)
    {
        $timediff = (is_null($local) || $local ? time() : $local) - $remote;
        $chunks = array(
            array(60 * 60 * 24 * 365, 'year'),
            array(60 * 60 * 24 * 30, 'month'),
            array(60 * 60 * 24 * 7, 'week'),
            array(60 * 60 * 24, 'day'),
            array(60 * 60, 'hour'),
            array(60, 'minute'),
            array(1, 'second')
        );

        for ($i = 0, $j = count($chunks); $i < $j; $i++) {
            $seconds = $chunks[$i][0];
            $name = $chunks[$i][1];
            if (($count = floor($timediff / $seconds)) != 0) {
                break;
            }
        }
        return __("%d {$name}%s ago", $count, ($count > 1 ? 's' : ''));
    }
//时间戳转在多长时间之前
    function format_date($time)
    {
        $t = time() - $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 . '前';
            }
        }
    }

今天开始的Y-m-d H:i:s

/**
     * 今天开始的Y-m-d H:i:s
     *
     * @return string
     */
    function beginToday()
    {
        return date('Y-m-d') . ' 00:00:00';
    }

今天结束的Y-m-d H:i:s

/**
     * 今天结束的Y-m-d H:i:s
     *
     * @return string
     */
    function endToday()
    {
        return date('Y-m-d') . ' 23:59:59';
    }

本周的开始日期

 /**
     * 本周的开始日期
     *
     * @param bool $His 是否展示时分秒 默认true
     *
     * @return false|string
     */
    function beginWeek($His = true)
    {
        $timestamp = mktime(0, 0, 0, date('m'), date('d') - date('w') + 1, date('Y'));
        return $His ? date('Y-m-d H:i:s', $timestamp) : date('Y-m-d', $timestamp);
    }

本周的结束日期

/**
     * 本周的结束日期
     *
     * @param bool $His 是否展示时分秒 默认true
     *
     * @return false|string
     */
    function endWeek($His = true)
    {
        $timestamp = mktime(23, 59, 59, date('m'), date('d') - date('w') + 7, date('Y'));
        return $His ? date('Y-m-d H:i:s', $timestamp) : date('Y-m-d', $timestamp);
    }

本月的开始日期

  /**
     * 本月的开始日期
     *
     * @param bool $His 是否展示时分秒 默认true
     *
     * @return false|string
     */
    function beginMonth($His = true)
    {
        $timestamp = mktime(0, 0, 0, date('m'), 1, date('Y'));
        return $His ? date('Y-m-d H:i:s', $timestamp) : date('Y-m-d', $timestamp);
    }

本月的结束日期

 /**
     * 本月的结束日期
     *
     * @param bool $His 是否展示时分秒 默认true
     *
     * @return false|string
     */
    function endMonth($His = true)
    {
        $timestamp = mktime(23, 59, 59, date('m'), date('t'), date('Y'));
        return $His ? date('Y-m-d H:i:s', $timestamp) : date('Y-m-d', $timestamp);
    }

今年的开始日期

 /**
     * 今年的开始日期
     *
     * @param bool $His 是否展示时分秒 默认true
     *
     * @return false|string
     */
    function beginYear($His = true)
    {
        $timestamp = mktime(0, 0, 0, 1, 1, date('Y'));
        return $His ? date('Y-m-d H:i:s', $timestamp) : date('Y-m-d', $timestamp);
    }

今年的结束日期

  /**
     * 今年的结束日期
     *
     * @param bool $His 是否展示时分秒 默认true
     *
     * @return false|string
     */
    function endYear($His = true)
    {
        $timestamp = mktime(23, 59, 59, 12, 31, date('Y'));
        return $His ? date('Y-m-d H:i:s', $timestamp) : date('Y-m-d', $timestamp);
    }

根据时间戳返回星期几

 /**
     * 根据时间戳返回星期几
     * @param string $time 时间戳
     * @return 星期几
     */
    function weekday($time)
    {
        if (is_numeric($time)) {
            $weekday = array('星期日', '星期一', '星期二', '星期三', '星期四', '星期五', '星期六');
            return $weekday[date('w', $time)];

        }
        return false;
    }