0

大家好,当我上传日期值时,我对如何检测单元格值是否格式化为日期有疑问,我使用此代码

$data = $objWorksheet->getCellByColumnAndRow($col, $row);

当单元格值被格式化为日期$data = 27474时,值不是,$data = 12/2/1983 那么我使用此代码来格式化它们的日期

if(PHPExcel_Shared_Date::isDateTime($data)){
           $cellValue = $objWorksheet->getCellByColumnAndRow($col, $row)->getValue();
           $dateValue = PHPExcel_Shared_Date::ExcelToPHP($cellValue);                        
           $dob =  date('Y-m-d',$dateValue);    
    }                               

现在,问题是什么时候$data在日期格式化这个代码是好的,但是当$data没有格式化时,这个值$data = 2036-02-18是错误的值

任何人都可以帮助我如何解决这个问题在此先感谢

4

3 回答 3

3

请试试这个,这应该工作,

if(PHPExcel_Shared_Date::isDateTime($data)){
   $cellValue = $objWorksheet->getCellByColumnAndRow($col, $row);
   $InvDate= $cellValue->getValue();

   if(PHPExcel_Shared_Date::isDateTime($cell)) {
   $InvDate = date($format, PHPExcel_Shared_Date::ExcelToPHP($InvDate)); 
}  
}  
于 2015-02-12T09:40:14.273 回答
2

感谢您的帮助,但事实证明这是解决我的问题的方法:

$data = $objWorksheet->getCellByColumnAndRow($col, $row);   

if(!strtotime($data)) {
    if(PHPExcel_Shared_Date::isDateTime($data)) {
        $cellValue = $objWorksheet->getCellByColumnAndRow($col, $row)->getValue();
        $dateValue = PHPExcel_Shared_Date::ExcelToPHP($cellValue);                       
        $dateh     = date('Y-m-d',$dateValue);                          
    } else {                        
        $dateh  = "";                                                   
    } else {
        $st = strtotime($data);
        $dateh = date('Y-m-d',$st);                         

    }               
}
于 2015-02-13T07:44:53.180 回答
0

只是因为我遇到了这个......我使用了 strtotime 方法,但我正在通过 mssql 提取数据进行处理,所以我就这样做了

if(!strtotime($r['effective_date'])) {
            $r['effective_date'] = \Carbon\Carbon::parse(\PhpOffice\PhpSpreadsheet\Shared\Date::excelToDateTimeObject($r['effective_date']))->format('Y-m-d');
        }
于 2020-09-14T20:28:09.680 回答