bzzear
/** * 日期按时间单位返回 * @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'],
@cola 按照我的想法最好时能够把mimeTypes.php中的key对应的value改成数组
'xlsx' => array('application/vnd.openxmlformats-officedocument.spreadsheetml.sheet', 'application/octet-stream'),但是我就是不太清楚怎么在不改变源码的基础上实现,刚使用yii不久
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中 生成这些文件