javascript - 在 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 的那一刻生成的。
有什么解决方法吗?这样它会自动计算时间并将其转换为用户拥有的任何时区
解决方案
使用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');
推荐阅读
- macos - 使用非 root 用户构建 docker 映像的 MacOS 卡住了
- python - 将 N 个元素的列表分组为两个或一个的子组
- kql - 一个 iff 函数可以有多个条件吗?
- reactjs - 在 ReactJs 上实时更新图像源
- python - 如何操作数据以获取熊猫数据框?
- asp.net-core-mvc - Bearer Token Auth 不适用于 Swashbuckle 和 ASPNetZero / ABP
- ios - 当应用程序在后台时将用户的位置转发到服务器(Swift/iOS)
- php - PDF名称添加到表格但不存储到文件夹中
- redis - 如何通过 redis-cli 或其他方式将许多值插入集合中?
- javascript - 如果你用 jQuery 修复一个块