您现在的位置是:首页 > 其他

李清波 2017-03-31 其他 3050 复制当前网址

PHP把Excel数值格式转成日期格式问题

在excel中:40847对应2017-10-31,是日期的数值型表现形式。


在PHP中,echo date('Y-m-d H:i:s',40847);//结果1970-01-01 11:52:30


原因:


PHP 的时间函数是从1970-1-1日开始计算的,单位是秒数。但是 EXCEL的是从1900-1-1日开始算的单位是天数。


如果只计算1970以后的时间的话,就好处理了。


先获得 EXCEL中 1970-1-1 代表的数字,我查了是25569。


现在要把excel中的40947,在php中用函数正确的显示出来


代码如下:

<?php
  $time = (40847 – 25569) * 24*60*60; //获得秒数
  echo date('Y-m-d H:i:s', $time);   //出来 2017-10-31
?>


后来发现这个东西还不是太好用精确到秒的话会有一定的误差!

 

原来还有更简单的方法:

8fb8d1bcgc1f1da77a670&690.png


其实我一开始也纳闷了,刚开始百度的时候找到了第一种方式,不过感觉不准确,而且有些麻烦,后来才看到第二种方式,感觉挺简单粗暴的,所以就拷贝下来了,便于下次再遇到类似问题时知道怎么办。

文章来源:http://liqingbo.com/blog-1343.html

评论