1. 程式人生 > >php讀取excel檔案的日期時間問題

php讀取excel檔案的日期時間問題

      通過php匯入excel檔案的資料進入資料庫,這個倒是之前就做過,但是這次做的時候出現了一個問題,就是excel檔案裡的一個欄位需要填寫日期,這個日期怎麼也不能正確的匯入到mysql的資料庫中,個人理解好像是excel裡欄位的型別的問題,設定了半天也不好用,最好的一個結果就是日期能正常取出來了,但是日期不但加了1,而且日和月是顛倒顯示的,也就是輸入的是2011-1-5匯入之後卻是2011-6-1,很奇怪的問題,後來瞭解到,excel中用一個距離1900年的天數序列記錄時間 1900-01-01 為整數1900-01-02為整數2,以次類推。我們知道,在windows的PHP中只支援1970-2038年時間計算,那怎麼才能讓它變成正常的日期呢,下面就是步驟:

1.首先,在excel裡填寫完日期後,把該單元格的格式變成常規,此時單元格的資料就由日期變成了一串數字,儲存excel檔案;

2.然後就是程式碼部分了,用下面這段程式碼轉換一下就OK了:

echo exceltimtetophp(39899);   //2009-3-27
function exceltimtetophp($days,$time=false)
{
 if(is_numeric($days))
 {
  $jd = GregorianToJD(1, 1, 1970);
  $gregorian = JDToGregorian($jd+intval($days)-25569);
  $myDate = explode(\'/\',$gregorian);
  $myDateStr
= str_pad($myDate[2],4,\'0\', STR_PAD_LEFT)."-".str_pad($myDate[0],2,\'0\',
STR_PAD_LEFT)."-".str_pad($myDate[1],2,\'0\', STR_PAD_LEFT).($time?"
00:00:00":\'\');
  return $myDateStr;
 }
 return $time;
}