首页 > 解决方案 > 从 UTC 时区确定 DST 或 CST 时区

问题描述

我有 UTC 时区日期,我想根据 DST 是否在同一个城市应用来转换 CST 或 DST。

由于我的浏览器不是基于同一个城市,所以当地时间是没有用的。示例:我的用户来自印度,但他们也会看到 NewYork Date 的数据

我有一个基于 NewYork 的服务器,所以使用 SSR 我可以获得服务器的日期,但它总是在 CST 中显示我如何将日期更改为 DST?

标签: javascriptnode.js

解决方案


您可以使用Date.toLocaleString()将 UTC 日期转换为特定时区。这将遵守本地 DST 规则并且是本机 JavaScript 代码(不需要库!)

因此,如果我们有 UTC 日期列表,我们可以转换为特定时区。我创建了一个 UTC 日期和时区列表,并格式化了该时区和日期的日期。

当然,您可以选择不同的显示区域设置,例如,如果您有印度客户,您可以使用“en-in”或您认为最佳显示区域设置。

您应该能够在服务器端或(最好)在客户端进行任何时区转换。如果您以 UTC 格式(例如 YYYY-MM-DDTHH:mm:ssZ)将所有日期发送给客户端,您可以在客户端代码中转换为客户端时区。

const displayLocale = "en-us"; // Set this to en-gb, en-in etc..
const uctDateList = [ new Date("2019-06-01T12:00:00Z"), new Date("2019-12-01T12:00:00Z")];
const timeZoneList = ['America/New_York', 'America/Los_Angeles', 'Asia/Kolkata'];


uctDateList.forEach(utcDate => {
    console.log("\nServer Time: ", utcDate.toISOString());
  timeZoneList.forEach(timeZone => {
    console.log(`Time in timezone (${timeZone}):`, utcDate.toLocaleString(displayLocale, { timeZone }));
  })
});


推荐阅读