Spreadsheet_excel_reader 日期格式[重复]

2024-01-06

我正在使用电子表格_excel_reader 读取 php 上的 xls 文件并将数据插入到 oracle 数据库中。我正在使用下面的代码:

$filename = 'test.xls';
$reader=new Spreadsheet_Excel_Reader();
$reader->setUTFEncoder('iconv');
$reader->setOutputEncoding('CP1251');
$reader->read($filename);

for($r=1; $r<=$reader->sheets[0]['numRows']; $r++)
{
   for($c=1; $c<=$reader->sheets[0]['numCols']; $c++)
   {
      if (isset($reader->sheets[0]['cells'][$r][$c])) 
      {
         //I'm using this code to get the value
         echo $reader->sheets[0]['cells'][$r][$c];
      }
   }
}

我的问题是,当我尝试读取日期值时,它显示的不是“01/11/2014”,而是“41944”。有人可以帮助我吗?


您正在读取的值实际上是 MS Excel 时间戳,通常是自 1900 年 1 月 1 日以来的天数(尽管如果电子表格使用 Mac 1904 日历,则可能是自 1904 年 1 月 1 日以来的天数)

您需要将其转换为 Unix 时间戳,以便使用 PHP 日期函数......取决于所使用的日历,这是一个快速而肮脏的转换:

Windows 1900 日历

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

反之亦然

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

Mac 1904 日历

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

反之亦然

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

所以 MS Excel41944 => $unixTimestamp = (41944 - 25569) * 86400; giving 1414800000这是 UNIX 时间戳1st November 2014

一旦你有了 unix 时间戳,你就可以使用 PHP 的标准 date() 函数或 DateTime 对象来按照你的意愿操作和格式化它

echo date('d-M-Y', $unixTimestamp);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Spreadsheet_excel_reader 日期格式[重复] 的相关文章

随机推荐

  • TPL 数据流和 Akka.net 有什么区别?

    我曾使用过 TPL 数据流 真的很喜欢它 我从我的 java scala 朋友那里多次听到 Akka 这个词 所以我尝试阅读相关内容 发现 akka 也有一个 net 端口 伟大的 当我继续阅读 akka 是什么时 我惊讶地发现它听起来和
  • 在 aws 上部署使用 mongodb 的 Node js 应用程序

    我对亚马逊网络服务和弹性豆茎很陌生 虽然很多人说它简单易用 但我想说这是一个非常主观的说法 对于像我这样刚接触云托管和虚拟专用服务器的人来说 我相信学习曲线与必须 艰难地 学习的人没有太大不同 我正在开发一个nodejs网站 它使用expr
  • 我可以配置我的 .ssh/config 文件以使用我的 aws pem 文件作为所有 ec2 连接的默认文件吗

    当前我的 ssg config 有 Host git codecommit amazonaws com User APKAS2GIPODK72AAAAAA IdentityFile ssh codecommit rsa Host githu
  • 从 swift 添加数据并查询到 firebase

    我在从 swift 到 firebase 的查询中遇到问题 下面是我在 firebase 中的示例 JSON 卢利维 d220 Contas KwlPQZTqVfNhHAsFyW5 Nome Assets Numero 1 KwlGJLUT
  • 使用 pqxx 编译程序时出现问题

    我正在尝试使用 pqxx 编译一个非常简单的程序 不执行任何操作的示例 但无法做到这一点 这是 程序 猫 xx cpp include
  • React 导航事件监听器被多次调用

    我正在尝试使用功能组件方法在反应导航上实现一些侦听器 const ExampleComponent gt const subs setSubs React useState React useEffect gt setSubs naviga
  • Windows 7 x64 COM/串行端口嗅探器/重定向

    我需要知道我的计算机和 USB 虚拟 COM 端口设备之间发生了什么 以便了解所有字节是否都已正确传输 我使用 Java 应用程序与设备交互 并且希望有一个本机应用程序允许我查看交换的帧 双向 但我在 Windows 7 x64 中找不到任
  • 对于 Android,FireBase 卡在“运行您的应用程序以验证安装”上

    我是android开发的新手 很长一段时间以来 我陷入了一个错误 即运行您的应用程序以验证安装 检查应用程序是否已与我们的服务器通信 您可能需要卸载并重新安装您的应用程序 build gradle Module app dependenci
  • .NET Core 中有没有办法阻止 Postman 发出的 HTTP 请求?

    我只是想知道是否有办法阻止POSTMAN发出的HTTP请求 就像浏览器在 CORS 的帮助下只允许特定来源访问资源 提前致谢 No 在 CORS 中 浏览器的工作是阻止请求 或应答 您的服务器不知道请求的 真相 如果某些高级用户在浏览器设置
  • 将 eclipse 3.7 升级到 4.2 (Juno) 的最简单方法

    那么 由于 Eclipse juno 基于 4 2 而不是 3 7 除了安装一个单独的 juno 副本并重新安装 3 7 中的所有现有插件之外 升级到它的最简单方法是什么 eclipse org 上似乎没有提到直接的升级路径 Eclipse
  • 令人困惑的 typedef 涉及类作用域

    我正在阅读 C 项目的代码 它包含以下形式的一些代码 namespace ns class A class B struct C typedef ns A ns B type 有人可以解释一下它的含义吗typedef line type似乎
  • Angular 2 - 无法读取未定义的属性“AssetUrl”

    我是新来的angular2 and material design 我正在尝试将它们一起使用 I cloned this Material2 应用程序 https github com jelbourn material2 app 这是基于
  • 计算和验证第一个字节的时间 (TTFB)

    我得到了以下公式来测量第一个字节的时间 TTFB TTFB 到 DOM 就绪和页面加载 TTFB window performance timing responseStart window performance timing navig
  • Redux 减速器初始化相同的状态键

    我正在搞乱github 上的 最简单的 Redux 示例 https github com jackielii simplest redux example我添加了第二个减少 state count 的减速器 如果我在 switch cas
  • 如何用C#实现交互式决策树

    我需要允许用户通过在屏幕上显示的两个简单选项之间进行选择来选择自己的路径 以便进行下一组选择 直到他们到达其中一个结局 即应该实现这样的事情 我尝试过以下代码 但每次只评估左侧 我想知道如何才能达到如上图所示的结果 覆盖所有分支 例如 如果
  • AbstractNum 和 NumberingInstance 的用途

    1 我在想他的目的AbstractNum是重用编号格式并且NumberingInstance是创建新列表 从 1 重新启动 但我注意到 如果在 1 处重新启动列表的第二个实例 openxml 文档将具有该列表的精确副本AbstractNum
  • Resharper 总是建议我制作 const string 而不是 string

    哪一个好 string sQuery SELECT FROM table or const string sQuery SELECT FROM table 为什么 resharper 总是建议我这样做 后者更好 这意味着 这不是实例变量 因
  • AIX 上的 proftpd 静态编译

    我想在 AIX 上编译 proftpd 使其可以部署在其他服务器上 而不必在每台服务器上重新安装所有 gnu lib 库 我已经设法动态编译它 但我无法使用该选项来编译它 LDFLAG Wl static 就像 Proftpd 官方文档中的
  • 如何在 Debian Wheezy armel 上安装 g++ 4.9?

    我的 Debian 7 armel 嵌入式系统目前有 g 4 6 我想升级到 g 4 9 以使用新的 C 11 功能 我怎么做 我当前的sources list内容是 deb http security debian org wheezy
  • Spreadsheet_excel_reader 日期格式[重复]

    这个问题在这里已经有答案了 我正在使用电子表格 excel reader 读取 php 上的 xls 文件并将数据插入到 oracle 数据库中 我正在使用下面的代码 filename test xls reader new Spreads