MomentJS конвертировать Unix в местный часовой пояс и захватить с этого момента - PullRequest
0 голосов
/ 01 ноября 2018

У меня есть метка времени Unix, которую я пытаюсь преобразовать в местный часовой пояс, а затем отобразить .fromNow. Однако я не могу найти лучший способ конвертировать в местный часовой пояс, и текущая техника форматирования не может использоваться с .fromNow. Может кто-нибудь указать, что я делаю неправильно с форматированием и как я могу получить местный часовой пояс пользователя?

Unix Пример:

1541032289

Попытка:

moment(1541032289).format('YYYY MM DD').fromNow();

Сообщение об ошибке:

TypeError: moment(...).format(...).fromNow is not a function

UPDATE:

Код после замены .format() на .unix()

Код:

store.zrevrange(zrangeSet, 0, -1, function(err, keys){
        var range = [];
        for (var i = 0; i < keys.length; i ++ ) {
            var keyObj = JSON.parse(keys[i]);
            keyObj.timestamp = moment().unix(keyObj.timestamp).fromNow();
            range.push(keyObj);
        }
        console.log(range);
    });

Новая ошибка:

            keyObj.timestamp = moment().unix(keyObj.timestamp).fromNow();
                                                                       ^

TypeError: moment(...).unix(...).fromNow is not a function

1 Ответ

0 голосов
/ 01 ноября 2018

В вашем коде есть две проблемы. Во-первых, format возвращает строку, в то время как вы должны вызывать fromNow() для объектов момента. Таким образом, вы можете просто удалить format('YYYY MM DD').

Вторая проблема заключается в том, что вы должны использовать moment.unix(Number) вместо moment(Number).

Как указано в документации:

Чтобы создать момент из метки времени Unix (секунды с начала эпохи Unix), используйте moment.unix(Number).

Вот живой пример:

console.log( moment.unix(1541032289).fromNow() );
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.22.2/moment.min.js"></script>
...