moment.fromNow () проблема с часовым поясом - PullRequest
0 голосов
/ 31 марта 2020

Я получаю сообщение о новостях с сервера, дата которого не включает часовой пояс. Я знаю, что сообщения поступают из часового пояса EST, например: 30 марта 2020 года в 10:53 (-5 по Гринвичу); Когда сообщение было обновлено всего за несколько секунд, go moment.fromNow () показывает мне, что оно было опубликовано примерно через 8 часов go, потому что я живу в +3 GMT. Что я должен сделать, чтобы moment.fromNow (), показывающий правильные посты времени, был обновлен без учета разницы во времени Извините за мой английский sh. Мой код:

...
const dateMoment = moment(date, 'MMMM DD, YYYY h:mm A');
news.date = dateMoment.toDate();
...

//in component

<Text style={styles.cardDate}> {moment(news.date).fromNow()} </Text> //getting text '8 hours ago' even if it was posted right now 
...

 {moment(news.date).tz('America/New_York').fromNow()} // didn't work too, still 8 hours difference

Ответы [ 2 ]

0 голосов
/ 03 апреля 2020

Это была моя ошибка. Я неправильно проанализировал дату. Правильный путь был:

const dateMoment = moment(date, 'MMMM DD, YYYY h:mm A').tz('America/New_York', true);
news.date = dateMoment.toDate();

Я должен был установить keepLocalTime на true в tz(timezone: string, keepLocalTime?: boolean): moment.Moment.

Теперь я просто использую в компоненте:

<Text style={styles.cardDate}> {moment(news.date).fromNow()} </Text>

И действительно, часовой пояс тоже был не прав, это не Нью-Йорк, а Лос-Анджелес ...

0 голосов
/ 31 марта 2020

Если вы хотите преобразовать время в определенный c часовой пояс, вы можете попробовать задать ему utcOffset, например -

{ moment(news.date).utcOffset('-05:00').fromNow() }
...