【发布时间】:2014-12-31 11:11:36
【问题描述】:
你好朋友我有一个 php 程序,用户可以上传 excel 文件,数据将存储在 php 数据库中,它按我的预期工作,但问题是存储在数据库中的日期与我在 excel 中输入的完全不同
我已使用以下代码从 excel 中读取值..
include("excel/reader.php");
$data = new Spreadsheet_Excel_Reader();
$data->setOutputEncoding('CP1251');
$data->read($_POST['upload']);
$conn = mysql_connect("localhost","root","");
mysql_select_db("mydatabase",$conn);
$a="TRUNCATE TABLE `sheet`";
mysql_query($a);
for ($x = 2; $x <= count($data->sheets[0]["cells"]); $x++)
{
$inv = $data->sheets[0]["cells"][$x][1];
$ds = $data->sheets[0]["cells"][$x][2];
$dosstr=strtotime($ds);
$dos=date('Y-m-d',$dosstr);
$ptname = $data->sheets[0]["cells"][$x][3];
$bal = $data->sheets[0]["cells"][$x][4];
$proname = $data->sheets[0]["cells"][$x][5];
$sql = "INSERT INTO sheet (INV,DOS,PTNAME,BAL,PROV)
VALUES ('$inv','$dos','$ptname','$bal','$proname')";
mysql_query($sql);
}
header('location:exsheet2.php');
?>
我在 excel 中存储了以下日期 2014 年 9 月 1 日, 28/12/2013 , 1991 年 9 月 27 日, 2015 年 1 月 1 日, 2014 年 12 月 31 日, 2012 年 1 月 1 日, 2001 年 5 月 9 日。
但是存储在数据库中的是 1970-01-01 , 1970-01-01 , 1970-01-01 , 1970-01-01 , 1970-01-01 , 1970-01-01 , 1970-01-01 , 1970-01-01。
请帮我解决这个问题,谢谢
for ($x = 2; $x <= count($data->sheets[0]["cells"]); $x++)
{
$inv = $data->sheets[0]["cells"][$x][1];
$ds = $data->sheets[0]["cells"][$x][2];
echo $ds;
echo "<br>";
if(ctype_digit($ds))
{
date_default_timezone_set("Asia/Kolkata");
$dDate = date_create('1900-01-01');
$dDate = date_modify($dDate, '+'.($ds-2).' day');
if($dDate!="")
{
$dos = date_format($dDate,'Y-m-d');
echo "IF".$dos;
echo "<br>";
}
else
{
$dos=$ds; //not able to convert date so show it directly
echo "Else".$dos;
echo "<br>";
}
}
else
{
$dos=$ds;
echo"if Else".$dos;
}
$ptname = $data->sheets[0]["cells"][$x][3];
$bal = $data->sheets[0]["cells"][$x][4];
$proname = $data->sheets[0]["cells"][$x][5];
$sql = "INSERT INTO sheet (INV,DOS,PTNAME,BAL,PROV)
VALUES ('$inv','$dos','$ptname','$bal','$proname')";
mysql_query($sql);
}
【问题讨论】:
-
回声 $ds;粘贴输出
-
如果我只是打印 $ds 我得到以下输出 41648,41636,33508,42005,42004,40909,37139
-
所以你在解析 excel 后没有得到日期。不是吗?
-
是的,你说得对,我什至更改了 excel 中的单元格格式,但没有用
-
@manikandan 这是 PHP 日期函数的问题,Excel 将日期作为整数返回,它不是天数,不是时间戳。请参阅我的答案以获得解释。