我正在做一个接收完整工作表的课程,减少信息量,并回答另一个工作表,在该工作表中有一个可以有负时间的字段(-H:i),该功能:
$file ['AH42'] = '-0:21';
$hdE = \PHPExcel_Style_NumberFormat::toFormattedString($file['AH42'], 'HH:i'));
把我还给我:
$ hdE = '23: 39'
,应该返回'-0:21'
。
我该怎么做?
让PHPexcel返回否定时间而不从00:00
答案 0 :(得分:1)
也许将减号移动到格式化字符串?
$file ['AH42'] = '0:21'
$hdE = \PHPExcel_Style_NumberFormat::toFormattedString($file['AH42'], '-HH:i'));
答案 1 :(得分:-1)
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的工作方式)。