moment.fromNow() 时区问题
moment.fromNow() timezone issue
我从服务器收到 post 的新闻,日期不包括时区,我知道 posts 来自 EST 时区,例如:2020 年 3 月 30 日 10:53 上午(-5 格林威治标准时间);当 post 几秒钟前刚刚更新时 moment.fromNow() 向我显示它是 post 像 8 小时前编辑的,因为我住在格林威治标准时间 +3。我应该怎么做才能使显示正确时间 posts 的 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
如果你想将时间转换为特定时区,你可以尝试给它一个 utcOffset
,比如 -
{ moment(news.date).utcOffset('-05:00').fromNow() }
这是我的错误。我解析日期错误。正确的方法是:
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>
实际上时区也是错误的,不是纽约而是洛杉矶...
我从服务器收到 post 的新闻,日期不包括时区,我知道 posts 来自 EST 时区,例如:2020 年 3 月 30 日 10:53 上午(-5 格林威治标准时间);当 post 几秒钟前刚刚更新时 moment.fromNow() 向我显示它是 post 像 8 小时前编辑的,因为我住在格林威治标准时间 +3。我应该怎么做才能使显示正确时间 posts 的 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
如果你想将时间转换为特定时区,你可以尝试给它一个 utcOffset
,比如 -
{ moment(news.date).utcOffset('-05:00').fromNow() }
这是我的错误。我解析日期错误。正确的方法是:
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>
实际上时区也是错误的,不是纽约而是洛杉矶...