PHPExcel字符串到时间

PHPExcel字符串到时间,php,time,phpexcel,Php,Time,Phpexcel,我已经创建了一个Excel电子表格。在第二列中,我有一些值,如0:11:23和2:03:33,值数千行。我使用PHP将格式设置为: $sheet->getStyle($colRange)->getNumberFormat()->setFormatCode(PHPExcel_Style_NumberFormat::FORMAT_DATE_TIME4); 但这些细胞仍然只是字符串。如果将单元格从0:11:22编辑为类似于0:11:33的其他内容,则该单元格将转换为时间。在

我已经创建了一个Excel电子表格。在第二列中,我有一些值,如
0:11:23
2:03:33
,值数千行。我使用PHP将格式设置为:

    $sheet->getStyle($colRange)->getNumberFormat()->setFormatCode(PHPExcel_Style_NumberFormat::FORMAT_DATE_TIME4);
但这些细胞仍然只是字符串。如果将单元格从
0:11:22
编辑为类似于0:11:33的其他内容,则该单元格将转换为时间。在顶部,它从
0:11:22
0:11:33 AM
AM的自动添加似乎是一个巨大的变化,然后我可以对该文件执行我想要的操作

如何将数千个单元格从
0:11:22
更改为
0:11:22 AM

试试这个

$sheet
    ->getStyle($colRange)
    ->getNumberFormat()
    ->setFormatCode('[$-C09]d mmm yyyy;@');

这是因为您必须将日期/时间转换为MS Excel序列化的时间戳,并将该值存储在单元格中;如中所述,并显示在
/Examples
文件夹中

一旦存储了实际的MS Excel时间戳值,就可以对其应用格式

$objPHPExcel->getActiveSheet()->setCellValue('A12', 'Date/Time')
    ->setCellValue('B12', 'Time')
        ->setCellValue('C12', PHPExcel_Shared_Date::PHPToExcel( $dateTimeNow ));
$objPHPExcel->getActiveSheet()
    ->getStyle('C12')
    ->getNumberFormat()
    ->setFormatCode(PHPExcel_Style_NumberFormat::FORMAT_DATE_TIME4);

这是一个老帖子,但也许它会帮助一些人

$objPHPExcel->getActiveSheet()
->setCellValue('E5', '=TEXT(TIMEVALUE("'. $the_str_Time . '"),"[h]:mm")');
TIMEVALUE函数将字符串转换为时间, 文本函数为它们提供所需的格式。
我是用来测量超过24小时的时间的

Hi Mark,我切换到了格式_DATE _TIME8,你也正确,它需要时间戳格式。这大约是他们想要的方式的90%。现在唯一的一件事是,如果你稍微更改0:01:02,excel将其更改为12:01:03 AM-他们喜欢这样。但是,通过编程进行操作会使其在excel公式栏中显示“09/20/2016 12:01:03 AM”,而不仅仅是他们想要的时间。。。我知道你回答了这个问题,但是你有没有办法不显示日期部分,就像你只是手动更改时间那样?我还通过删除Excel datetime的日期部分修复了我的“09/20/2016 12:01:03 AM”问题:12345.6789->0.6789$val=$objPHPExcel->getActiveSheet()->getCell($cell)->getValue(); $timestamp=DateTime::createFromFormat('H:i:s',$val)$excelTime=PHPExcel\u Shared\u Date::PHPToExcel($timestamp)$excelTime=$excelTime-(int)$excelTime$objPHPExcel->getActiveSheet()->setCellValue($cell,$excelTime);嗨,丹尼,谢谢你抽出时间-我需要的是时间,而不是日期格式。我确实尝试过用时间格式使用你的代码,它确实正确地格式化了时间戳,但我的问题是首先没有使用时间戳。。。