无法读取 php 中 excel 的日期

Unable to read date from excel in php

谁能帮我找出以下代码的问题...这些是我在 excel 26-1-2013 28-12-2013 中的日期,但它打印 1970-01-01.

我尝试了 date_create 和 date_modify 等不同的功能,但没有任何效果我在我的程序中使用了 date fun 但它不起作用。

 <?php
include("excel/reader.php");
$data = new Spreadsheet_Excel_Reader();
$data->setOutputEncoding('CP1251');
$data->read($_POST['upload']);
$conn = mysql_connect("localhost","root","");
mysql_select_db("omega",$conn);
mysql_query($a);
for ($x = 2; $x <= count($data->sheets[0]["cells"]); $x++) 
{
$inv = $data->sheets[0]["cells"][$x][1];
$ds = $data->sheets[0]["cells"][$x][2];
echo "ds=".$ds;
echo "<br>";
$dos= date('Y-m-d',strtotime(str_replace('/','-',$ds)));
echo "$dos=".$dos;
echo "<br>";
$ptname = $data->sheets[0]["cells"][$x][3];
$bal = $data->sheets[0]["cells"][$x][4];
$proname = $data->sheets[0]["cells"][$x][5];
  $sql = "INSERT INTO sheet (INV,DOS,PTNAME,BAL,PROV)
VALUES ('$inv','$dos','$ptname','$bal','$proname')";
mysql_query($sql);
}
  ?>

这些日期不在 format that can be interpreted by strtotime() 中。在将它们转换为新格式之前,您需要使用 DateTime::createFromFormat() 来解释这些日期。

$date = DateTime::createFromFormat('j-n-Y', '26-1-2013');
$dos = $date->format('Y-m-d');

您正在读取的值实际上是一个 MS Excel 时间戳,通常是自 1900 年 1 月 1 日以来的天数(但如果电子表格使用Mac1904年历)

您需要将其转换为 Unix 时间戳,以便使用 PHP 日期函数....根据正在使用的日历,快速而肮脏的转换:

Windows 1900 日历

$unixTimestamp = ($excelTimestamp - 25569) * 86400;

反之

$excelTimestamp = ($unixTimestamp / 86400) + 25569;

Mac 1904 年日历

$unixTimestamp = ($excelTimestamp - 24107) * 86400;

反之

$excelTimestamp =  ($unixTimestamp / 86400) + 24107;

所以 MS Excel 41300 => $unixTimestamp = (41300 - 25569) * 86400; 给出 1359158400 这是 26th January 2013

的 unix 时间戳