我用的phpexcelreader,如果你在excel输入选择的是日期的话他倒入数据库后会变得多一天,我看了下源代码,发现excel中日期是按照秒存储的,我在本机的apache时间设定的是“中国时区”是不是和编者的时间有冲突?请问如何解决?谢谢以下是phpexcelreader关于date的类:{ createDate()    /**
     * Convert the raw Excel date into a human readable format
     *
     * Dates in Excel are stored as number of seconds from an epoch.  On 
     * Windows, the epoch is 30/12/1899 and on Mac it's 01/01/1904
     *
     * @access private
     * @param integer The raw Excel value to convert
     * @return array First element is the converted date, the second element is number a unix timestamp
     */ 
    function createDate($numValue)
    {
        if ($numValue > 1) {
            $utcDays = $numValue - ($this->nineteenFour ? SPREADSHEET_EXCEL_READER_UTCOFFSETDAYS1904 : SPREADSHEET_EXCEL_READER_UTCOFFSETDAYS);
            $utcValue = round(($utcDays+1) * SPREADSHEET_EXCEL_READER_MSINADAY);
            $string = date ($this->curformat, $utcValue);
            $raw = $utcValue;
        } else {
            $raw = $numValue;
            $hours = floor($numValue * 24);
            $mins = floor($numValue * 24 * 60) - $hours * 60;
            $secs = floor($numValue * SPREADSHEET_EXCEL_READER_MSINADAY) - $hours * 60 * 60 - $mins * 60;
            $string = date ($this->curformat, mktime($hours, $mins, $secs));
        }        return array($string, $raw);
    }哪位大牛能给我讲解一下帮我改一下万分感谢

解决方案 »

  1.   

    可以在返回的unix时间戳时 转换下 
    strtotime (timetamp);
      

  2.   

    楼主,我研究了一下,问题出在
    $utcValue = round(($utcDays+1) * SPREADSHEET_EXCEL_READER_MSINADAY);
    修改成  $utcValue = round(($utcDays+0) * SPREADSHEET_EXCEL_READER_MSINADAY);excel当中1970-1-1  12:00:00 AM 是 25569开始的  和 mysql unix_timestamp 0  1970-1-1 8:00 AM  还是相差8个小时
      

  3.   

    excel当中25569增一就增一天,mysql unix_timestamp增一是增一秒
      

  4.   

    将$utcValue = round(($utcDays+0)改为$utcValue = round(($utcDays-1/3)