Excel奇怪的时间戳。 如何将其转换回正常的时间戳?

我正在使用Flash和as3将Excel时间戳转换为正常的时间戳,因此 – 正常的date。

我有这个function

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

这工作正常,如果我只需要一个正确的date(年,月,日)。 但现在我有一个时间,这是显示在Excel中如下:

  1:00:00 

但是细胞的真正价值是:

  1/1/1900 1:00:00 AM 

这是由Excel自动生成的。 现在,当我用as3代码读取Excell时,如同date一样,我得到十进制数。 这一次我得到这个:

  1.0416666666666667 

当我在这个十进制数上运行相同的函数,我得到这个:

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

这显然是不正确的。 就我所知,有了这个function,我只能用date而不是时间来工作。 任何人都可以看看这个,弄清楚,如何得到的时间来使用这个function呢?

在我写这个问题的时候,我自己想出来了。 据记载,excel时间戳是从1900/01/01开始的总天数。 所以这意味着,小数点后面的数字是一天的百分比。 对我来说,我只是把这个数字乘以一天中的总秒数,并得到了正确的时间。 function如下:

  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); } 

所以,谁得到同样的问题,这应该工作得很好。