日期值为float - Apple的iWork Numbers 09 - 内部XML

时间:2013-02-28 12:43:47

标签: date datetime date-format iwork

我正在用PHP编写一个脚本,它将Numbers文件转换为HTML表格,但我无法弄清楚哪种格式用于日期存储。日期单元格标记看起来像

<sf:d 
    sf:s="SFTCellStyle-128" 
    sf:w="84.074219" 
    sf:h="14" 
    sf:cell-date="371397519.99999952" />

因此日期必须是sf:cell-date属性,但我无法弄清楚如何将其转换为人类可读的格式。有任何想法吗?我从未将日期值视为浮点数。

1 个答案:

答案 0 :(得分:0)

正如评论中所写,它是自01/01/2001 00:00:00以来的秒数。掌握了这些知识,因为这与UNIX Epoch密切相关,您需要做的就是定义和使用偏移量。它应与几乎所有现有的PHP日期函数和对象兼容,例如date

define('CELL_DATE_EPOCH_OFFSET', 978307200);

$sf_cell_date = 371397519.99999952;

echo date('r', CELL_DATE_EPOCH_OFFSET + $sf_cell_date);

这个小脚本的输出是(在我的时区):

Mon, 08 Oct 2012 15:58:39 +0200

我希望这会有所帮助。 978307200 01/01/2001 00:00:00 UTC的unix时间戳,您可以使用PHP获取,例如使用以下代码示例:

$base = new DateTime('01/01/2001 00:00:00 UTC');

echo $base->getTimestamp(), "\n";

如果那是你的问题。