Php 转换为[h]:mm:ss;@格式转换为Excel数字

Php 转换为[h]:mm:ss;@格式转换为Excel数字,php,excel,Php,Excel,当我将41:30:00粘贴到Excel的一个单元格中,并选择“常规”格式选项时,它会返回这个十进制数:172916667 如何通过PHP(公式)实现这个十进制数 我的意思是,我想将单元格的值设置为172916667,而不是41:30:00(PHPExcel),因为我遇到了格式问题,无法将其作为Excel文件中的值读取。刚刚解决了这个问题。 在本例中,由一段时间生成的数字表示为24小时的分数 因此,12:00:00将是0,5,依此类推 我把数字转换成秒,然后除以86400,也就是24小时的秒数 此

当我将41:30:00粘贴到Excel的一个单元格中,并选择“常规”格式选项时,它会返回这个十进制数:172916667

如何通过PHP(公式)实现这个十进制数

我的意思是,我想将单元格的值设置为172916667,而不是41:30:00(PHPExcel),因为我遇到了格式问题,无法将其作为Excel文件中的值读取。

刚刚解决了这个问题。 在本例中,由一段时间生成的数字表示为24小时的分数

因此,12:00:00将是0,5,依此类推

我把数字转换成秒,然后除以86400,也就是24小时的秒数

此外,PHPExcel使用此自定义格式来正确显示时间:

$objPHPExcel->setActiveSheetIndex(0)->getStyle('C'.$row_start.':E'.$row)
                                        ->getNumberFormat()->setFormatCode('[h]:mm:ss;@');

更具体地说,当您将H:m:s粘贴到Excel中时,它假定1900年1月1日加上H:m:s部分。显示的数字表示从1900年1月0日开始的天数和部分天数,这一点很奇怪。因此,例如,如果您使用“常规”格式将1月21日12:00:00转换为2.5。如果您只对时间部分感兴趣,可以将数字放在时段之前。如果您使用的是PHPExcel,请查看PHPExcel_Shared_Date中用于在人类可读的/unix时间戳/DateTime对象/Excel序列化时间戳之间转换的方法