发布于 2年前

thinkphp 使用 phpexcel 导入日期时间的问题

php使用phpexcel导入excel时,如果某列使用的是excel的日期时间格式,比如2019/12/18 20:00:00,如果数据库存储的是时间戳,而在导入时直接使用了strtotime(),则导入的时间是不正确的,而且是空的,因为读取出来根本不是一个时间戳,而是类似43817.833333333这样的数据,需要转一下。

function excelTime($date) {
        if (function_exists('GregorianToJD')) {
                if (is_numeric($date)) {
                        $jd = GregorianToJD(1, 1, 1970);
                        $gregorian = JDToGregorian($jd + intval($date) - 25569);
                        $date = explode('/', $gregorian);
                        $date_str = str_pad($date[2], 4, '0', STR_PAD_LEFT) . "-" . str_pad($date[0], 2, '0', STR_PAD_LEFT) . "-" . str_pad($date[1], 2, '0', STR_PAD_LEFT) . ($time ? " 00:00:00" : '');
                        return $date_str;
                }
        } else {
                $date = $date > 25568 ? $date + 1 : 25569; /*There was a bug if Converting date before 1-1-1970 (tstamp 0)*/
                $ofs = (70 * 365 + 17 + 2) * 86400;
                $date = date("Y-m-d", ($date * 86400) - $ofs);
        }
        return $date;
}
©2020 edoou.com   京ICP备16001874号-3