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

时间:2013-08-28 19:22:26

标签: excel actionscript-3 timestamp

我正在使用Flash和as3将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自动编写的。现在,当我用as3代码读取Excell时,与日期一样,我得到十进制数。这次我得到了这个:

    1.0416666666666667

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

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

这显然不正确。 我得到的是,通过该功能,我只能使用日期而不是时间。任何人都可以看看这个,并弄清楚,如何有时间使用这个功能?

1 个答案:

答案 0 :(得分: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);
}

所以,任何遇到同样问题的人都应该可以正常工作。