2013-08-28 134 views
1

我正在使用Flash和as3將Excel時間戳轉換爲正常時間戳,因此 - 正常日期。Excel奇怪的時間戳。如何將其轉換回正常的時間戳?

我有這個功能

public static function dateFromExcel(date:Number):Date { 
     return new Date(1970, 0, 1 + (date - 25569)); 
    } 

,如果我只需要一個正確的日期(年,月,日)這工作得很好。但現在我有時間,即如下在Excel中顯示:

1:00:00 

但電池的真正價值在於:

1/1/1900 1:00:00 AM 

這是一個用Excel autoformatted。現在,當我用as3代碼閱讀Excell時,如同日期一樣,我得到十進制數。對於這一次我得到這個:

1.0416666666666667 

當我運行這個十進制數相同的功能,我得到這個:

Mon Jan 1 00:00:00 GMT+0200 1900 

這顯然是不正確。 就我所知,使用該功能,我只能使用日期而不是時間。任何人都可以看看這個,弄清楚,如何讓時間使用這個函數呢?

回答

2

在我寫這個問題的時候,我想到了自己。 據記錄,excel時間戳是1900/01/01開始的總天數。 所以這意味着,小數點後的數字是一天的百分比。對我而言,我只是在一天內將這個數字乘以秒數,並獲得了正確的時間。功能如下:

public static function dateFromExcel(date:Number):Date { 
    var sec_ind_day:Number = 86400; 
    var secs:Number = sec_ind_day*date%1; 
    var _d:Date = new Date(1970, 0, 1 + (date - 25569)); 
    return new Date(_d.fullYear, _d.month, _d.date, _d.hours, _d.minutes, secs); 
} 

所以,任何人誰得到同樣的問題,這應該工作得很好。