我在读从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
请使用这个公式从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);
当使用PHPExcel您可以使用内置的功能:
$excelDate = $cell->getValue(); // gives you a number like 44444, which is days since 1900
$stringDate = \PHPExcel_Style_NumberFormat::toFormattedString($excelDate, 'YYYY-MM-DD');
一个简单的方法...
<?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');
看来你的变量是一个字符串,或期待美国的日期格式。
使用“日期时间:: createFromFormat”投日期为实际日期格式
$date = DateTime::createFromFormat('d/m/y', $value['A']);
echo $date->format('Y-m-d');
如果你正在使用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)将返回用正确的值的日期时间对象