2013-05-30 106 views
5

即時通訊使用PHP 5.3並閱讀了很多材料,但仍然無法找到解決方案。1970年以前的PHP日期

我要使用從Excel導入生日1945年1月10日到MySQL PHP 不管我試過沒有給我結果(即時得到一個負數)

這裏是我試過的最後解決方案:

$數據爲Excel文件(使用Excel閱讀器類,即時通訊)

$date_of_birth = ($data->sheets[0]['cells'][$i][11] - 25569) * 86400; 

結果是-2207692800

我在這裏幹什麼?

+0

你從哪裏得到這個負值?在PHP中還是在MySQL表中?確保列類型爲DATE,因爲它可以處理這樣的日期。 – silkfire

+4

不好意思,25569是什麼? – jimmy

+0

如果你不解釋'25569'來自哪裏以及它應該代表什麼,那麼絕對沒有辦法回答這個問題。首先,Excel擁有自己的Epoch,PHP可以將日期當作對象來處理,所以1970年可能根本就不相關。 –

回答

4

Unix時代之前的日期在PHP中表現爲負數,所以你沒有做錯任何事情。
當您在時間戳中使用date time函數中的任何函數時,您將得到正確的值。

+1

-2207692800並沒有接近01/10/1945。 -788144400是。 –

+0

我會給它一個看看我得到什麼... –

+0

PHP也可能代表微秒或某些這樣的信息 –

1

爲什麼你想將MSExcel日期轉換爲(不兼容)unix時間戳以便將數據放入MySQL?只要採取直接途徑:

$qry="INSERT INTO birthdays (person, birthday) 
    VALUES ('$person', 18991231000000 + INTERVAL " 
    . $data->sheets[0]['cells'][$i][11] . " DAY)"; 

(存儲在msexcel的整數值是天數自1899年12月31日)

+1

請注意1900年2月29日:) –

+0

@MarkBaker 1900不是閏年 - Excel有問題嗎? –

+0

@ ring0 - 我知道它不是,但MS Excel相信它,就像之前的Lotus 1-2-3一樣(MS將錯誤導入到Excel中以確保與Lotus 1-2-3兼容) –

相關問題