Конструктор Flex Date() неверно конвертирует отметки времени Unix argh

Это серьезно убивает меня. Я пытаюсь преобразовать временную метку Unix (1236268800, которая приравнивается к Thu, 05 Mar 2009 16:00:00 GMT) к объекту Date в Flex.

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

Любой из этих методов должен работать. Что я здесь делаю неправильно?

Ответ 1

вам нужно преобразовать в миллисекунды, умножить на 1000

Ответ 2

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

Если вы передаете один аргумент типа данных Number, объекту Date присваивается значение времени на основе количества миллисекунд с 1 января 1970 года 0: 00: 000 GMT, как указано в одиночный аргумент.

Вам нужно умножить свой номер на 1000.

Ответ 3

Поскольку он анализируется как миллисекунды, просто умножьте значение эпохи на 1000:

trace(new Date(1236268800 * 1000));
// Thu Mar 5 08:00:00 GMT-0800 2009

Ответ 4

В AS3 конструктор Date() принимает значение в миллисекундах, а время Unix - в секундах. Попробуйте следующее:

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