【问题标题】:Convert PHP date to Excel?将PHP日期转换为Excel?
【发布时间】:2011-10-14 13:28:13
【问题描述】:

我相信 Excel 的日期格式是自 1899 年 12 月 30 日以来的天数。(为什么?因为它基于 1900 年 1 月 1 日,但它们错误地包括 1900 年的闰日,而且它是从 1 开始的。所以1900 年的前几个月没问题,但后来就出错了。Excel 中的 1/1/1901 是“367”。)

那么,如何将 PHP 中的日期或时间戳(通常存储为 Unix 时间戳,即自 1970 年 1 月 1 日以来的秒数)转换为 Excel?

在 PHP 5.1.6 中?

是的,打赌你没有看到那个来。所以我没有任何可用的 DateTime 对象、date_create()、date_diff() 等函数。

是否可以不简单地记录 1970 年 1 月 1 日的 Excel 日并从那里开始工作?是否有 DST 证明版本?

【问题讨论】:

  • 我不认为你用来编写Excel文件的任何东西都附有任何转换功能?如果这只是 CSV,我发现 Excel 非常擅长解析基本的日期/时间格式。
  • 我正在使用 PHPExcel,其转换日期的内置函数依赖于 PHP 5.2。 95% 的 PHPExcel 在 5.1 中工作,但不是日期转换。我正在制作一个实际的 Excel 文件,当我只发送日期字符串“07/27/2011”时,它似乎无法将其识别为日期,因此操作和排序已关闭。
  • 我不认为升级到 5.2 或更高版本是一种选择?
  • 如果可以的话,相信我。去年它在我的圣诞节清单上,今年可能会。
  • 酷。你做了[php5.1]!

标签: php excel date


【解决方案1】:

如果我没记错的话,一天有 86400 秒,从 1899 年 12 月 30 日到 1970 年 1 月 1 日有 25569 天。因此,要将 Unix 时间戳转换为 Excel 日期,公式

ExcelDate = 25569 + UnixTS / 86400

应该可以工作。当然,这个公式只对 UTC 是正确的。 (此外,它忽略闰秒。)对于其他时区,如果您知道与 UTC 的偏移量(以秒为单位!),您可以在使用上述公式之前将其添加到时间戳。

【讨论】:

  • 我想这暂时可以用。而且我怀疑 DST 会很重要 - 它会以正确的方式进行。 (如果它最终是 480.04 天或 479.96 天,那仍然会四舍五入到 480...)
  • 结果即使我输入了天数,格式化代码仍然需要 5.2。哦,好吧。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-06-22
  • 2011-11-06
  • 2014-05-27
  • 2018-04-16
  • 2015-09-29
  • 2015-09-07
  • 1970-01-01
相关资源
最近更新 更多