【问题标题】:moment.fromNow() timezone issuemoment.fromNow() 时区问题
【发布时间】:2020-07-11 22:15:31
【问题描述】:

我正在从服务器获取不包含时区的新闻帖子,我知道帖子来自美国东部标准时间时区,例如:2020 年 3 月 30 日上午 10:53(格林威治标准时间-5);当帖子刚刚在几秒钟前更新时,moment.fromNow() 向我显示它是在 8 小时前发布的,因为我住在 +3 GMT。我应该怎么做才能更新显示正确时间帖子的moment.fromNow()而不考虑时区差异。对不起我的英语不好。 我的代码:

...
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

【问题讨论】:

  • 你可能想要from,以及现在在 EST 中的值。

标签: javascript typescript react-native momentjs moment-timezone


【解决方案1】:

如果您想将时间转换为特定时区,可以尝试给它一个utcOffset,例如 -

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

【讨论】:

【解决方案2】:

这是我的错。我解析日期错误。正确的做法是:

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

我应该在tz(timezone: string, keepLocalTime?: boolean): moment.Moment 中将keepLocalTime 设置为true

现在我只在组件中使用:

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

实际上时区也错了,不是纽约而是洛杉矶...

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-09-16
    • 2016-09-12
    • 2012-02-27
    • 2011-06-15
    • 2021-01-26
    • 2020-02-17
    • 2017-08-30
    相关资源
    最近更新 更多