2011-07-27 195 views
4

Excel的日期格式我相信是自1899年12月30日以来的天数。(为什么?因为它基于1/1/1900,但它错误地包含了1900年的闰日,并且它是基于一个的。在1900年的头几个月罚款,但后来出错了。在Excel中1/1/1901是“367”。)将PHP日期转换为Excel?

那么,我该如何将日期或时间戳从PHP(通常存储为Unix时间戳,自1/1/1970以来的秒数)到Excel?

在PHP 5.1.6中?

是的,打赌你没有看到有人来。所以我没有任何DateTime对象,date_create(),date_diff()等功能可用。

如果没有简单地记录1970年1月1日的Excel日期并且从那里开始工作,甚至有可能吗?并且有防DST版吗?

+0

我不假设你用来写入Excel文件的任何附加的转换函数吗?如果这只是CSV,我发现Excel在解析基本日期/时间格式方面非常出色。 – Brad

+0

我正在使用PHPExcel,它的内置函数根据PHP 5.2转换日期。 95%的PHPExcel在5.1中工作,但不是日期转换。我正在制作一个实际的Excel文件,当我只是发送日期字符串“07/27/2011”时,它似乎并不认为它是日期,所以操作和排序都是关闭的。 – Andrew

+0

我不认为升级到5.2或更高版本是一种选择吗? – Brad

回答

9

如果我没有记错的话,有86400秒的一天,25569天1899年12月和01一月至1970年期间30的,为了将Unix时间戳到Excel日期,配方

ExcelDate = 25569 + UnixTS/86400

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

+0

我想现在可以工作了。我怀疑夏令时将会如何 - 它会以合适的方式进行。 (如果结果是480.04天或479.96天,那么它仍然会达到480 ...) – Andrew

+0

即使我放入#天,格式化代码仍然需要5.2。好吧。 – Andrew