如何将Excel中的TIMESTAMP格式值插入到数据库中

我想从Excel中插入TIMESTAMP格式的值到数据库中。 价值有点像这个“1/6/2016 12:00:00 AM”。 我使用此代码将值插入到数据库中

$TimeStamp = mysqli_real_escape_string($conn,trim($objPHPExcel->getActiveSheet()->getCell('A' . $row)->getValue())); 

但价值是这样的“42522”。 它的价值似乎转移不正确。 看来代码有问题,不适合插入TimeStamp格式的值。 我可以知道如何解决这个问题吗?

谢谢。

Excel自1900年1月1日起在内部存储date。例如:“2011年6月9日上午10:30”将被存储为“40703.4375”。 40703是01/01/1900以来的整整天数,0.4375是时间(10.5 / 24 = 0.4375)。

处理从Excel电子表格中读取的date(例如,使用PHPExcel)时,通常需要将它们转换为UNIX时间戳,即UTC自1970年1月1日午夜以来经过的秒数。

这是一个PHP代码来做到这一点:

  // Numbers of days between January 1, 1900 and 1970 (including 19 leap years) define("MIN_DATES_DIFF", 25569); // Numbers of second in a day: define("SEC_IN_DAY", 86400); function excel2timestamp($excelDate) { if ($excelDate <= MIN_DATES_DIFF) return 0; return ($excelDate - MIN_DATES_DIFF) * SEC_IN_DAY; } 

如果您提供稍后在应用程序中读取的Excel电子表格,则可以在电子表格中添加一个隐藏单元格来计算您的时间戳。 假设B2是存储date的单元格,计算时间戳的公式为:

代码:=(B2-DATE(1970,1,1))* 86400现在只需要从隐藏的单元格中读取计算的值。

Excel是给你正确的信息,你也正确地做。 为了说明,Excel以整数格式存储时间戳值。 所以,在这里你得到价值“42552”这显然是正确的,现在你必须使用这个function来实现你在做什么

 <?php function ExcelToTimeStamp($dateValue = 0, $ExcelBaseDate=0) { if ($ExcelBaseDate == 0) { $myExcelBaseDate = 25569; // Adjust for the spurious 29-Feb-1900 (Day 60) if ($dateValue < 60) { --$myExcelBaseDate; } } else { $myExcelBaseDate = 24107; } // Perform conversion if ($dateValue >= 1) { $utcDays = $dateValue - $myExcelBaseDate; $returnValue = round($utcDays * 86400); if (($returnValue <= PHP_INT_MAX) && ($returnValue >= -PHP_INT_MAX)) { $returnValue = (integer) $returnValue; } } else { $hours = round($dateValue * 24); $mins = round($dateValue * 1440) - round($hours * 60); $secs = round($dateValue * 86400) - round($hours * 3600) - round($mins * 60); $returnValue = (integer) gmmktime($hours, $mins, $secs); } // Return return $returnValue; } $myTimestamp = // Output will be 146473920001 and it is a timestamp in php you can store it echo date('d M Y', $myTimestamp); now convert that timestamp value in any format you want usnig date() ?>