Конструктор Flex Date () неправильно конвертирует метки времени Unix - PullRequest
10 голосов
/ 13 февраля 2009

Это серьезно убивает меня. Я пытаюсь преобразовать метку времени Unix (1236268800, что соответствует чт, 05 марта 2009 г., 16:00:00 по Гринвичу) в объект 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

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

Ответы [ 4 ]

21 голосов
/ 13 февраля 2009

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

4 голосов
/ 13 февраля 2009

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

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

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

3 голосов
/ 13 февраля 2009

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

var timestamp:Number = 1236268800;
trace(new Date(timestamp * 1000));
3 голосов
/ 13 февраля 2009

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

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