1

我正在使用 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

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

4

1 回答 1

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

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

于 2013-08-28T19:22:25.540 回答