Blogger Information
Blog 3
fans 0
comment 0
visits 5043
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
php读取excel中的时间转换问题
₉₄₇的博客
Original
1599 people have browsed it

问题描述:

今天要做数据导入:把2012-5-10 16:00:00 读入到php中后变成了41039

这种Excel列的单元格格式为日期单元格式,如果是文本格式则会得到我们想要的原样的字符串类型。


处理方式

方案一

$t = 41807搜索; //读取到的值
$n = intval(($t - 25569) * 3600 * 24); //转换成1970年以来的秒数
echo gmdate('Y-m-d H:i:s',$n);//格式化时间,不是用date哦, 时区相差8小时的

方案二

$date读取到的值

    function excelTime($date, $time = false) {
        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).($time ? " 00:00:00" : '');
        }
        return $date;
    }


方案三

PHPExcel_Shared_Date::ExcelToPHP(“要转换的时间”) 

我按照这个方案处理的,思前想后觉得完全依靠运营自由发挥,万一有时候单元格式不是时间格式,而我依旧按照时间格式处理的话,就会出现问题,所以我先判断了下Excel读到的数据是不是2008-12-11格式或者是不是2008/12/11这样的数据,如果是则不做处理,如果不是则按照方案三进行

function excelTime($date, $time = false) {
        //如果是数字则转化,如果是有 - 或者 /,视作文本格式不作处理
        $type1 = strpos($date, '/');
        $type2 = strpos($date, '-');
        if($type1 || $type2){
            $return_date = $date;
        }else{
            $return_date=date('Y-m-d',PHPExcel_Shared_Date::ExcelToPHP($date));
        }
        return $return_date;
    }


Statement of this Website
The copyright of this blog article belongs to the blogger. Please specify the address when reprinting! If there is any infringement or violation of the law, please contact admin@php.cn Report processing!
All comments Speak rationally on civilized internet, please comply with News Comment Service Agreement
0 comments
Author's latest blog post