使用PHP Excel的Excel的日期转换(Excel date conversion using

2019-06-25 15:27发布

我在读从Excel日期是这种格式2012年12月5日日/月/年使用此代码阅读。 使用PHP EXCEL

   PHPExcel_Style_NumberFormat::toFormattedString($value['A'],'YYYY-MM-DD' );

其工作像魅力上述日期'12 /二千零十二分之五转换' 到‘2012-12-05’

现在的问题是,如果日期是让说18/5/2012或者你可以说,如果我设置日大于12,它给了我这个日期18/5/2012这种格式18/5/2012在格式化后

我想这件事情,以及

      $temp  = strtotime(  PHPExcel_Style_NumberFormat::toFormattedString($value['A'],'YYYY-MM-DD' );
      $actualdate = date('Y-m-d',$temp) ;

这也是转换的时间'12 / 5 / 2012' 正确的,但在这种情况下18/5/2012它给输出作为1970-01-01

Answer 1:

请使用这个公式从Excel日期的Unix日期更改,那么你可以使用“gmdate”要获得在PHP真正的日期:

UNIX_DATE = (EXCEL_DATE - 25569) * 86400

并从Unix日期到Excel转换日期,使用这个公式:

EXCEL_DATE = 25569 + (UNIX_DATE / 86400)

把这个公式为一个变量后,您可以使用这个例子中得到了真正的日期在PHP中:

$UNIX_DATE = ($EXCEL_DATE - 25569) * 86400;
echo gmdate("d-m-Y H:i:s", $UNIX_DATE);


Answer 2:

当使用PHPExcel您可以使用内置的功能:

$excelDate = $cell->getValue(); // gives you a number like 44444, which is days since 1900
$stringDate = \PHPExcel_Style_NumberFormat::toFormattedString($excelDate, 'YYYY-MM-DD');


Answer 3:

一个简单的方法...

<?php
    $date = date_create('30-12-1899');

    date_add($date, date_interval_create_from_date_string("{$value['A']} days"));
    echo date_format($date, 'Y-m-d');


Answer 4:

看来你的变量是一个字符串,或期待美国的日期格式。
使用“日期时间:: createFromFormat”投日期为实际日期格式

$date = DateTime::createFromFormat('d/m/y', $value['A']);
echo $date->format('Y-m-d');


Answer 5:

如果你正在使用Python,我决定从xlrd lib中添加xldate类这个问题,在这里我告诉你的代码(这是Odoo 10模块):

from xlrd import open_workbook, xldate
wb = open_workbook(file_contents=excel_file)
data_sheets = []

        # Parse all data from Excel file
        for s in wb.sheets():
            data_rows = []
            headers = []
            for row_key, row in enumerate(range(s.nrows)):
                if row_key != 0:
                    data_row = {}
                    for index, col in enumerate(range(s.ncols)):
                        value = s.cell(row, col).value
                        key = headers[int(index)]
                        if key == 'Date' and (isinstance(value, float) or isinstance(value, int)):
                            value = xldate.xldate_as_datetime(value, wb.datemode)
                            data_row[key] = value
                        else:
                            data_row[key] = value

                    data_rows.append(data_row)
                else:
                    for index, col in enumerate(range(s.ncols)):
                        value = (s.cell(row, col).value)
                        headers.append(value)
            data_sheets.append(data_rows)

值= xldate.xldate_as_datetime(值,wb.datemode)将返回用正确的值的日期时间对象



文章来源: Excel date conversion using PHP Excel