10

这真是要了我的命。我正在尝试将 Unix 时间戳(1236268800,相当于 2009 年 3 月 5 日星期四 16:00:00 GMT)转​​换为 Flex 中的 Date 对象。

var timestamp:Number = 1236268800;
trace(new Date(timestamp));

Output: Wed Jan 14 23:24:28 GMT-0800 1970

也试过这个:

var timestamp:Number = 1236268800;
var date:Date = new Date;
date.time = timestamp;
trace(date);

Output: Wed Jan 14 23:24:28 GMT-0800 1970

这些方法中的任何一种都应该有效。我在这里做错了什么?

4

4 回答 4

21

你必须转换为毫秒,乘以 1000

于 2009-02-13T00:31:22.343 回答
4

http://livedocs.adobe.com/flex/2/langref/Date.html#Date()

如果您传递一个数据类型为 Number 的参数,则 Date 对象被分配一个基于自 1970 年 1 月 1 日 0:00:000 GMT 以来的毫秒数的时间值,由 lone 参数指定。

您需要将您的数字乘以 1000。

于 2009-02-13T00:34:10.400 回答
3

由于它被解析为毫秒,只需将 epoch 值乘以 1000:

trace(new Date(1236268800 * 1000));
// Thu Mar 5 08:00:00 GMT-0800 2009
于 2009-02-13T00:34:40.243 回答
3

在 AS3 中,Date() 构造函数以毫秒为单位,而 Unix 时间以秒为单位。试试这个:

var timestamp:Number = 1236268800;
trace(new Date(timestamp * 1000));
于 2009-02-13T00:35:06.810 回答