最新公告
  • 欢迎您光临起源地模板网,本站秉承服务宗旨 履行“站长”责任,销售只是起点 服务永无止境!立即加入钻石VIP
  • php-excel解决导入的excel中日期格式为数字

    正文概述 转载于:掘金(西门族长)   2021-01-28   777

    1、使用php-EXCEL2.1版本

    历史项目,使用的是Laravel:5.6版本,Excel插件使用maatwebsite/excel:2.1.30,导入Excel数据的时候发现,有一些日期接收的时候变成了数值类型,如43126.0

    google一下,发现原来excel中表示日期的文本格式确实一组纯数字,而且这个纯数字就是一个偏移的值。这个偏移的值是距离1900/1/0 0:00:00的一个天数值2015/5/20的文本格式42144.6580671296正好是距离1900/1/0 0:00:00的天数。

    那么距离1900/1/0 0:00:0043123天正好就是2018后的某一天。43123/365=118.xxx年1900+118=2018

    因为PHPExcel中将所有的列解析成文本格式,读出的时间是距离1900-01-01的偏移天数。 即excel日期是从 1900-01-01 开始计算的(php 是从 1970-01-01),两者间有一个天数差 42144.6580671296。时间是格林威治时间

    2、编写通用函数解决该问题

    if (!function_exists('str_to_date')) {
        /**
         * (false|string) str_to_date_format : 将 "2017年7月10日" "2017.7.10" 转为标准的日期格式"2017-7-10"
         *
         * @param         $date
         * @param boolean $falseReturnNow 格式错误是否返回当前日期
         * @param string  $format
         *
         * @return false|string
         */
        function str_to_date_format($date, $falseReturnNow=true, $format='Y-m-d') {
            if (!$falseReturnNow && !$date) {
                return null;
            }
            // 接收的日期如果是数值型则用PHPExcel的内置方法转换成时间戳
            if (is_numeric($date)) {
                $timestamp = \PHPExcel_Shared_Date::ExcelToPHP($date);
                return date($format, $timestamp);
            }
            $date = str_replace(['号', '日'], '', $date);
            $date = str_replace(['年', '月', '.', '—', '——', '/', '-', '--'], '-', $date);
            // 如果时间格式错误,是否需要返回当前时间
            if (date($format, strtotime($date)) == '1970-01-01' && $falseReturnNow && DateTime::createFromFormat('Y-m-d G:i:s', $date) === FALSE) {
                return date($format);
            }
            return date($format, strtotime($date));
        }
    }
    

    起源地下载网 » php-excel解决导入的excel中日期格式为数字

    常见问题FAQ

    免费下载或者VIP会员专享资源能否直接商用?
    本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。
    提示下载完但解压或打开不了?
    最常见的情况是下载不完整: 可对比下载完压缩包的与网盘上的容量,若小于网盘提示的容量则是这个原因。这是浏览器下载的bug,建议用百度网盘软件或迅雷下载。若排除这种情况,可在对应资源底部留言,或 联络我们.。
    找不到素材资源介绍文章里的示例图片?
    对于PPT,KEY,Mockups,APP,网页模版等类型的素材,文章内用于介绍的图片通常并不包含在对应可供下载素材包内。这些相关商业图片需另外购买,且本站不负责(也没有办法)找到出处。 同样地一些字体文件也是这种情况,但部分素材会在素材包内有一份字体下载链接清单。
    模板不会安装或需要功能定制以及二次开发?
    请QQ联系我们

    发表评论

    还没有评论,快来抢沙发吧!

    如需帝国cms功能定制以及二次开发请联系我们

    联系作者

    请选择支付方式

    ×
    迅虎支付宝
    迅虎微信
    支付宝当面付
    余额支付
    ×
    微信扫码支付 0 元