php oracle日期格式化,php-Spreadsheet_excel_reader日期格式

我正在使用eBook_excel_reader读取php上的xls文件,并将数据插入到oracle数据库中.我正在使用以下代码:

$filename = 'test.xls';

$reader=new Spreadsheet_Excel_Reader();

$reader->setUTFEncoder('iconv');

$reader->setOutputEncoding('CP1251');

$reader->read($filename);

for($r=1; $r<=$reader->sheets[0]['numRows']; $r++)

{

for($c=1; $c<=$reader->sheets[0]['numCols']; $c++)

{

if (isset($reader->sheets[0]['cells'][$r][$c]))

{

//I'm using this code to get the value

echo $reader->sheets[0]['cells'][$r][$c];

}

}

}

我的问题是,当我尝试读取日期值时,而不是显示“ 01/11/2014”,而是显示“ 41944”.有人可以帮助我吗?

解决方法:

您正在读取的值实际上是MS Excel时间戳,通常是自1900年1月1日以来的天数(尽管如果电子表格使用Mac 1904日历,则可能是自1904年1月1日以来的天数).

您需要将其转换为Unix时间戳,以便与其一起使用PHP日期函数….根据所使用的日历,快速而又肮脏的转换:

Windows 1900日历

$unixTimestamp = ($excelTimestamp - 25569) * 86400;

反之亦然

$excelTimestamp = ($unixTimestamp / 86400) + 25569;

Mac 1904日历

$unixTimestamp = ($excelTimestamp - 24107) * 86400;

反之亦然

$excelTimestamp = ($unixTimestamp / 86400) + 24107;

因此,MS Excel 41944 => $unixTimestamp =(41944-25569)* 86400;给出1414800000,这是2014年11月1日的Unix时间戳

有了unix时间戳后,即可使用PHP的标准date()函数或DateTime对象按需对其进行操作和格式化

echo date('d-M-Y', $unixTimestamp);

标签:php,excel,date

来源: https://codeday.me/bug/20191028/1954610.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值