首页 > 解决方案 > 在 React 或 JavaScript 中将时间戳转换为本地时区

问题描述

我从使用 UTC 时区的 API 获取时间戳,我的时区是 UTC+2 我还使用timeago-react包来显示 API 生成的某些数据的时间前

const timestamp = blocks && blocks.block.timestamp; // getting data from API
let time = new Date(timestamp);
<p className="text-sm font-light">
 <TimeAgo datetime={time} locale="en_US" />
</p>

我遇到的问题是 API 返回 11AM 的时间戳,因为我的时区是 UTC+2,所以对我来说是下午 1 点,这里的问题是 UTC+2 时区但准时的用户的 11AM UTC = 1PM - ago 它显示数据是在 2 小时前生成的,这是不正确的。它是在我调用该 API 的那一刻生成的。

有什么解决方法吗?这样它会自动计算时间并将其转换为用户拥有的任何时区

标签: javascriptreactjsdatetime

解决方案


使用moment.js 使用 moment.js,您将能够获取用户时区,例如“America/Los_Angeles”并将任何现有时间戳转换为指定的时区。与使用 JS Date 相比,更具可读性和可维护性。

在您的情况下,代码应该是这样的

var timezone = moment.tz.guess();
var now = moment();
var la_now = now.tz('America/Los_Angeles');
// print using la_now.format('YYYY-MM-DD HH:mm:ss');

推荐阅读