我正在使用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
这显然不正确。 我得到的是,通过该功能,我只能使用日期而不是时间。任何人都可以看看这个,并弄清楚,如何有时间使用这个功能?
答案 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);
}
所以,任何遇到同样问题的人都应该可以正常工作。