bzzear

bzzear

这家伙有点懒,还没写个性签名!

  • 财富值3110
  • 威望值80
  • 总积分4330

个人信息

  • 回复了 的回答
    /**
     * 日期按时间单位返回
     * @param  integer  $epoch_event 要处理的时间戳
     * @param  integer $range       要处理的时间差,时间差以外的按日期格式返回
     * @param  integer $level       1.只返回最接近的时间单位
     * @return string
     */
    function time_ago($epoch_event, $range = 86400, $level = 1) {
        $time_ago = array();
        // $period = array('second', 'minute', 'hour', 'day', 'week', 'month', 'year', 'decade');
        $period = array('秒', '分', '小时', '天', '周', '月', '年', '十年');
        $difference = time() - $epoch_event;
        if ($difference >= $range) {
            return date('Y-m-d H:i');
        }
        if (($difference <= 59) && ($difference !== 0)) {
            $time_event = $difference / 1;
            return $time_event . $period[0] . '前';
        } elseif (($difference >= 60) && ($difference <= 3599)) {
            $time_event = $difference / 60;
            if (($difference % 60) === 0) {$add_time = '';}
            if (($difference % 60) !== 0) {$add_time = floor(($difference % 60) / 1) . $period[0];}
            if ($time_event === $level) {
                return $time_event . $period[1] . '前';
            } else {
                return floor($time_event) . $period[1] . $add_time . '前';
            }
        } elseif (($difference >= 3600) && ($difference <= 86399)) {
            $time_event = $difference / 3600;
            if (($difference % 3600) === 0) {$add_time = '';}
            if (($difference % 3600) !== 0) {$add_time = floor(($difference % 3600) / 60) . $period[1];}
            if ($time_event === $level) {
                return $time_event . $period[2] . '前';
            } else {
                return floor($time_event) . $period[2] . $add_time . '前';
            }
        } elseif (($difference >= 86400) && ($difference <= 604799)) {
            $time_event = $difference / 86400;
            if (($difference % 86400) === 0) {$add_time = '';}
            if (($difference % 86400) !== 0) {$add_time = floor(($difference % 86400) / 3600) . $period[2];}
            if ($time_event === $level) {
                return $time_event . $period[3] . '前';
            } else {
                return floor($time_event) . $period[3] . $add_time . '前';
            }
        } elseif (($difference >= 604800) && ($difference <= 2591999)) {
            $time_event = $difference / 604800;
            if (($difference % 604800) === 0) {$add_time = '';}
            if (($difference % 604800) !== 0) {$add_time = floor(($difference % 604800) / 86400) . $period[3];}
            if ($time_event === $level) {
                return $time_event . $period[4] . '前';
            } else {
                return floor($time_event) . $period[4] . $add_time . '前';
            }
        } elseif (($difference >= 2592000) && ($difference <= 31103999)) {
            $time_event = $difference / 2592000;
            if (($difference % 2592000) === 0) {$add_time = '';}
            if (($difference % 2592000) !== 0) {$add_time = floor(($difference % 2592000) / 604800) . $period[4];}
            if ($time_event === $level) {
                return $time_event . $period[5] . '前';
            } else {
                return floor($time_event) . $period[5] . $add_time . '前';
            }
        } elseif (($difference >= 31104000) && ($difference <= 311039999)) {
            $time_event = $difference / 31104000;
            if (($difference % 31104000) === 0) {$add_time = '';}
            if (($difference % 31104000) !== 0) {$add_time = floor(($difference % 86400) / 2592000) . $period[5];}
            if ($time_event === $level) {
                return $time_event . $period[6] . '前';
            } else {
                return floor($time_event) . $period[6] . $add_time . '前';
            }
        } elseif ($difference >= 311040000) {
            return $period[7] . '前';
        } else {
            return '刚刚'; // in case $epoch_event gets set to time();
        }
        return $time_ago;
    }
    

    写了一个更详细的

  • /**
     * 日期按时间单位返回
     * @param  integer  $epoch_event 要处理的时间戳
     * @param  integer $range       要处理的时间差,时间差以外的按日期格式返回
     * @param  integer $level       1.只返回最接近的时间单位
     * @return string
     */
    function time_ago($epoch_event, $range = 86400, $level = 1) {
        $time_ago = array();
        // $period = array('second', 'minute', 'hour', 'day', 'week', 'month', 'year', 'decade');
        $period = array('秒', '分', '小时', '天', '周', '月', '年', '十年');
        $difference = time() - $epoch_event;
        if ($difference >= $range) {
            return date('Y-m-d H:i');
        }
        if (($difference <= 59) && ($difference !== 0)) {
            $time_event = $difference / 1;
            return $time_event . $period[0] . '前';
        } elseif (($difference >= 60) && ($difference <= 3599)) {
            $time_event = $difference / 60;
            if (($difference % 60) === 0) {$add_time = '';}
            if (($difference % 60) !== 0) {$add_time = floor(($difference % 60) / 1) . $period[0];}
            if ($time_event === $level) {
                return $time_event . $period[1] . '前';
            } else {
                return floor($time_event) . $period[1] . $add_time . '前';
            }
        } elseif (($difference >= 3600) && ($difference <= 86399)) {
            $time_event = $difference / 3600;
            if (($difference % 3600) === 0) {$add_time = '';}
            if (($difference % 3600) !== 0) {$add_time = floor(($difference % 3600) / 60) . $period[1];}
            if ($time_event === $level) {
                return $time_event . $period[2] . '前';
            } else {
                return floor($time_event) . $period[2] . $add_time . '前';
            }
        } elseif (($difference >= 86400) && ($difference <= 604799)) {
            $time_event = $difference / 86400;
            if (($difference % 86400) === 0) {$add_time = '';}
            if (($difference % 86400) !== 0) {$add_time = floor(($difference % 86400) / 3600) . $period[2];}
            if ($time_event === $level) {
                return $time_event . $period[3] . '前';
            } else {
                return floor($time_event) . $period[3] . $add_time . '前';
            }
        } elseif (($difference >= 604800) && ($difference <= 2591999)) {
            $time_event = $difference / 604800;
            if (($difference % 604800) === 0) {$add_time = '';}
            if (($difference % 604800) !== 0) {$add_time = floor(($difference % 604800) / 86400) . $period[3];}
            if ($time_event === $level) {
                return $time_event . $period[4] . '前';
            } else {
                return floor($time_event) . $period[4] . $add_time . '前';
            }
        } elseif (($difference >= 2592000) && ($difference <= 31103999)) {
            $time_event = $difference / 2592000;
            if (($difference % 2592000) === 0) {$add_time = '';}
            if (($difference % 2592000) !== 0) {$add_time = floor(($difference % 2592000) / 604800) . $period[4];}
            if ($time_event === $level) {
                return $time_event . $period[5] . '前';
            } else {
                return floor($time_event) . $period[5] . $add_time . '前';
            }
        } elseif (($difference >= 31104000) && ($difference <= 311039999)) {
            $time_event = $difference / 31104000;
            if (($difference % 31104000) === 0) {$add_time = '';}
            if (($difference % 31104000) !== 0) {$add_time = floor(($difference % 86400) / 2592000) . $period[5];}
            if ($time_event === $level) {
                return $time_event . $period[6] . '前';
            } else {
                return floor($time_event) . $period[6] . $add_time . '前';
            }
        } elseif ($difference >= 311040000) {
            return $period[7] . '前';
        } else {
            return '刚刚'; // in case $epoch_event gets set to time();
        }
        return $time_ago;
    }
    
  • 回复了 的回答

    这是我抓的我mime,自己简单写了个方法,虽然受限制,但是对我项目实用

    /**
         * 校验Excel mime类型
         * @return bool
         */
        public function checkExcelFileMime()
        {
            $excel_mime_hash = [
                'application/vnd.ms-excel',
                'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'
            ];
            if (in_array($this->excelFile->type, $excel_mime_hash, true)) {
                return true;
            }
            return false;
        }
    

    好的,多谢解答,我先看看还有没有好的方法

  • 好的,多谢,我看看还有没有好的方法

  • 回复了 的回答

    我做Excel的时候也发现了这个问题,后来我把验证规则MimeType验证关闭了.
    后来自己根据文件类型写了个验证规则
    这是我的验证规则

    [['excelFile'], 'file', 'skipOnEmpty' => true, 'checkExtensionByMimeType' => false, 'extensions' => 'xls,xlsx'],
    

    按照我的想法最好时能够把mimeTypes.php中的key对应的value改成数组
    'xlsx' => array('application/vnd.openxmlformats-officedocument.spreadsheetml.sheet', 'application/octet-stream'),

    但是我就是不太清楚怎么在不改变源码的基础上实现,刚使用yii不久

  • 回复了 的回答

    我做Excel的时候也发现了这个问题,后来我把验证规则MimeType验证关闭了.
    后来自己根据文件类型写了个验证规则
    这是我的验证规则

    [['excelFile'], 'file', 'skipOnEmpty' => true, 'checkExtensionByMimeType' => false, 'extensions' => 'xls,xlsx'],
    

    这样的话extensions就完全不验证了

  • 回复了 的回答

    我做Excel的时候也发现了这个问题,后来我把验证规则MimeType验证关闭了.
    后来自己根据文件类型写了个验证规则
    这是我的验证规则

    [['excelFile'], 'file', 'skipOnEmpty' => true, 'checkExtensionByMimeType' => false, 'extensions' => 'xls,xlsx'],
    

    怎么实现的,我看到你的验证的还是file

  • wps的excel表格的mimeType为application/octet-stream
    在yii2/helpers/mimeTypes.php中application/octet-stream对应的key是
    ["bin","bpk","deploy","dist","distz","dms","dump","elc","lrf","mar","pkg","so"]
    并没有xlsx,所以认为上传文件是不合法的

  • 请问下什么情况下会在/web/assets中 生成这些文件

总监 等级规则
4330/5000
资料完整度
30/100
用户活跃度
0/100

Ta的关注

1

Ta的粉丝

8

Ta的访客

19