用PHPExcel - XLS写一个负时间

时间:2017-09-22 20:11:23

标签: php date phpexcel

我正在做一个接收完整工作表的课程,减少信息量,并回答另一个工作表,在该工作表中有一个可以有负时间的字段(-H:i),该功能:

$file ['AH42'] = '-0:21';

$hdE = \PHPExcel_Style_NumberFormat::toFormattedString($file['AH42'], 'HH:i'));

把我还给我:

$ hdE = '23: 39',应该返回'-0:21'

我该怎么做?

让PHPexcel返回否定时间而不从00:00

计算

2 个答案:

答案 0 :(得分:1)

也许将减号移动到格式化字符串?

$file ['AH42'] = '0:21'
$hdE = \PHPExcel_Style_NumberFormat::toFormattedString($file['AH42'], '-HH:i'));

答案 1 :(得分:-1)

不要使用PHPExcel_Style_NumberFormat

PHPExcel v1.6 PHPExcel_Style_NumberFormat::toFormattedString函数,调用sprintf([predefinedFormat], $value),或返回date()的结果。所有预定义格式都不能处理负时间。此外,您提供的格式参数-HH:i不是该函数的接受列表,因此它只返回该值。

PHPExcel v1.8允许高度复杂的自定义数字格式选项,但仍无法处理日期或时间的否定。

请参阅:PHPExcel github代表v1.8,cmsws phpexcel docs代表v1.6

请自行格式化

注意,您不能像该函数那样调用date,因为php date()不支持负时间戳。因此,您必须手动记帐。

$time = $file['AH42'];
$hdE = ($time < 0) ? '-' : '';
$hdE = date('H:i', (1 * abs($time)));

虽然这在技术上意味着你在1970年1月1日的大纪元时间戳上运行,但时间仍然准确(Excel的工作方式)。