php读取excel文件的日期时间问题

时间:2022-06-01 18:59:44

      通过php导入excel文件的数据进入数据库,这个倒是之前就做过,但是这次做的时候出现了一个问题,就是excel文件里的一个字段需要填写日期,这个日期怎么也不能正确的导入到mysql的数据库中,个人理解好像是excel里字段的类型的问题,设置了半天也不好用,最好的一个结果就是日期能正常取出来了,但是日期不但加了1,而且日和月是颠倒显示的,也就是输入的是2011-1-5导入之后却是2011-6-1,很奇怪的问题,后来了解到,excel中用一个距离1900年的天数序列记录时间 1900-01-01 为整数1900-01-02为整数2,以次类推。我们知道,在windows的PHP中只支持1970-2038年时间计算,那怎么才能让它变成正常的日期呢,下面就是步骤:

1.首先,在excel里填写完日期后,把该单元格的格式变成常规,此时单元格的数据就由日期变成了一串数字,保存excel文件;

2.然后就是代码部分了,用下面这段代码转换一下就OK了:

echo exceltimtetophp(39899);   //2009-3-27
function exceltimtetophp($days,$time=false)
{
 if(is_numeric($days))
 {
  $jd = GregorianToJD(1, 1, 1970);
  $gregorian = JDToGregorian($jd+intval($days)-25569);
  $myDate = explode(\'/\',$gregorian);
  $myDateStr
= str_pad($myDate[2],4,\'0\', STR_PAD_LEFT)."-".str_pad($myDate[0],2,\'0\',
STR_PAD_LEFT)."-".str_pad($myDate[1],2,\'0\', STR_PAD_LEFT).($time?"
00:00:00":\'\');
  return $myDateStr;
 }
 return $time;
}