Почему момент. js дата на 50 лет вперед? - PullRequest
2 голосов
/ 11 февраля 2020

Использование момента для форматирования даты, полученной из отметки времени пожарного депо. Тем не менее, дата истекает как минимум на один день, а самое большее на несколько месяцев. и год заканчивается на 50 независимо от того, что.

Вот отметка времени пожарного магазина

enter image description here

РЕДАКТИРОВАТЬ: Вот то, что вошли из lastMsg.seconds: 1581372232

Я извлекаю время в секундах в renderItem FlatList:

 renderItem={({ item, index }) => {
        return (
            <Components.InboxItem
                title={item.withName}
                subtitle={item.lastMsg.seconds}
                img={item.withImg}
            />
        );

И, наконец, внутри компонента я использую момент следующим образом:

const date = moment()
  .utc()
  .startOf('year')
  .seconds(props.subtitle)
  .format('MMMM DD YYYY');

Несмотря на то, что я попробовал несколько конфигураций форматов, наиболее подходящим является точное значение .startOf("year"). Даже тогда, дата отображается как «Февраль 09, 2070». Если .startOf() изменяется на «месяц», «день» или «час», дата меняется на март. Как это можно исправить, чтобы отображать дату как в пожарном магазине?

Ответы [ 2 ]

3 голосов
/ 11 февраля 2020

Глядя на https://firebase.google.com/docs/reference/js/firebase.firestore.Timestamp, мы можем либо получить объект JS Date, либо использовать метод toMillis для получения миллисекунд.

Теперь простой момент. js API для преобразования временной метки в момент объекта дается здесь https://momentjs.com/docs/# / parsing / unix -timestamp-milliseconds /

moment(Number);

Теперь вы можете применить отформатируйте объект момента, как показано ниже:

moment(Number).format(String);

Возможно, проблема с неверной датой связана с использованием вместе utc и seconds и отсутствием передачи отметки времени в moment()

0 голосов
/ 11 февраля 2020

Использование moment.unix():

const props = {
  subtitle: 1581372232
};

const date = moment
  .unix(props.subtitle)
  .format('MMMM DD YYYY');

console.log(date);
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.24.0/moment.min.js"></script>

, поскольку item.lastMsg.seconds равно

Количество секунд UT C время с момента Unix эпоха 1970-01-01T00: 00: 00Z

...