我已经使用PHP excel读取了excel文件。
但是excel文件包含一些日期(时间格式)PHP excel为该情况返回错误的值
我的代码位于下方
println("i + f = \(Double(i) + f)") // i + f = 11.34
任何人都可以为此提供帮助.. 在PHPExcel中为这种情况设置一些特定功能..
我的输入excel文件位于下方
2013年12月12日, 2013年12月13日
我的输出在下面
41621, 41631
有一些方法来隐藏日期格式输出数据吗?
答案 0 :(得分:26)
当您使用PHPExcel_Reader_Excel5 lib读取xls文件时,文件中的数据为39984,但Excel使用日期格式掩码将其格式化为' 2009-06-20'?
Excel将日期作为自1900年1月1日以来的天数(在Windows 1900日历上)。 PHPExcel以相同的方式存储其日期,但不会自动为您格式化它们。
您可以使用PHPExcel_Style_NumberFormat::toFormattedString(39984,PHPExcel_Style_NumberFormat::FORMAT_DATE_DDMMYYYY)
或者PHPExcel_Style_NumberFormat
中的任何其他格式掩码自行格式化,或使用
PHPExcel_Shared_Date::ExcelToPHP(39984)
然后使用PHP的date()
函数根据需要对其进行格式化
示例:
$val = date('Y-m-d', PHPExcel_Shared_Date::ExcelToPHP($cell->getValue()));
答案 1 :(得分:4)
另一种方法是使用gmdate:
$excel_date = 43010; //here is that value 41621 or 41631
$unix_date = ($excel_date - 25569) * 86400;
$excel_date = 25569 + ($unix_date / 86400);
$unix_date = ($excel_date - 25569) * 86400;
echo gmdate("Y-m-d", $unix_date);
//result is 2017-10-02
答案 2 :(得分:1)
检索必须从Excel时间戳转换为Linux时间戳的日期。 你需要知道的是:
gmdate();
,而只使用date();
因此,为了将您简单地从Excel转换为Linux,您必须:
25569
86400
这是代码:
function fromExcelToLinux($excel_time) {
return ($excel_time-25569)*86400;
}
$linux_time = fromExcelToLinux(30637);
echo date("Y-m-d",$linux_time);
//should print 1983-11-17
那是所有人。
答案 3 :(得分:0)
如果您使用excel_reader进行Excel导入,则可以像这样使用Code。
include('excel_reader/xlsxreader/simplexlsx.class.php');
$xlsx_class = new SimpleXLSX();
$j['IST_Time'] = '43010';
echo date('Y-m-d',$xlsx_class->unixstamp($j['IST_Time'])); // Result will be 2017-10-02
时间
$j['IST_Time'] = '0.416666666667';
echo date('h:i A',$xlsx_class->unixstamp($j['IST_Time'])); //10:00 AM
或查看simplexlsx.class.php