首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PHP Spreadsheet_Excel_Reader -读取日期

问PHP Spreadsheet_Excel_Reader -读取日期
EN

Stack Overflow用户
提问于 2011-03-07 19:14:51
回答 3查看 10.5K关注 0票数 1

我正在尝试使用这个类来导入大量数据。大多数数据都是正确读取的,但是我有两个日期列,这给我带来了问题。

日期的格式为DD/MM/YYYY,返回的值比电子表格中的值提前一天。例如,04/03/2011变为05/03/2011

我尝试过像这样访问数据:

代码语言:javascript
复制
$data->sheets[$sheet]['cells'][$row][$col];

我还尝试使用原始数据:

代码语言:javascript
复制
$data->sheets[$sheet]['cellsInfo'][$row][$col]['raw']

它以unix时间戳的形式返回日期,但是仍然比它应该返回的日期早了一天。

有没有什么办法可以强制类将列的值作为一个简单的字符串返回?

任何建议都很感谢。

谢谢。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-03-07 19:23:10

Spreadsheet_Excel_Reader使用标准PHP date()函数将Excel数字日期/时间戳转换为PHP日期字符串。在Excel中作为日期/时间戳保存的数值实际上是UTC,因此这可能是一个时区问题。在导入工作簿之前,尝试在PHP脚本中向UTC发出date_default_timezone_set()。

票数 2
EN

Stack Overflow用户

发布于 2011-07-08 17:30:34

我也有同样的问题,我用一个小函数来解决它。

$zone=dateadde("d",-1,$cell);

其中:[# enter date = 23/08/2011

代码语言:javascript
复制
 function dateadde($interval, $number, $date) 
 {
    $jour=substr("$date", 0, 2);
    $mois=substr("$date", 3, 2);
    $annee=substr("$date", 6, 4);
    $adate = mktime(0,0,0,$mois,$jour,$annee);

    $date_time_array = getdate($adate);
    $hours = $date_time_array['hours'];
    $minutes = $date_time_array['minutes'];
    $seconds = $date_time_array['seconds'];
    $month = $date_time_array['mon'];
    $day = $date_time_array['mday'];
    $year = $date_time_array['year'];
    switch ($interval) 
    {
        case 'yyyy':
            $year+=$number;
            break;
        case 'q':
            $year+=($number*3);
            break;
        case 'm':
            $month+=$number;
            break;
        case 'y':
        case 'd':
        case 'w':
            $day+=$number;
            break;
        case 'ww':
            $day+=($number*7);
            break;  
    }
    $timestamp= mktime(0,0,0,$month,$day,$year);
    $jourascii=strftime("%d/%m/%Y",$timestamp);
    return $jourascii;
 }

]

如此糟糕的编辑器!!

票数 2
EN

Stack Overflow用户

发布于 2011-03-07 19:29:34

我认为文件中的日期不是Excel日期格式。有可能吗?

你能得到类似字符串的字段,然后将另一个字符串格式化为MM/DD/YYYY格式,并使用strtotime函数吗?

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5218983

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档