2013-02-28 51 views
1

我正在用PHP編寫一個腳本,它將Numbers文件轉換爲HTML表格,但我無法確定哪種格式用於日期存儲。日期的單元格標記看起來像日期值爲浮點數 - Apple的iWork Numbers 09 - 內部XML

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

所以日期必須在SF:細胞日期屬性,但我無法弄清楚如何將其轉換爲人類可讀的格式。有任何想法嗎?我從來沒有將日期值看作浮點數。

+0

它不是UNIX時間戳和附加精度 – 2013-02-28 12:51:30

+1

從01/01/2001在00:00:00開始的秒數。 – hakre 2013-02-28 13:02:49

+0

371397519.99999952應該是2012-10-08 13:58 – 2013-02-28 13:03:40

回答

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 

希望這很有幫助。在那是你的問題的情況下

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

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

978307200是Unix時間戳01/01/2001 00:00:00 UTC,你可以用PHP獲取例如與下面的代碼示例。

相關問題