javascript - 从 UTC 时区确定 DST 或 CST 时区
问题描述
我有 UTC 时区日期,我想根据 DST 是否在同一个城市应用来转换 CST 或 DST。
由于我的浏览器不是基于同一个城市,所以当地时间是没有用的。示例:我的用户来自印度,但他们也会看到 NewYork Date 的数据
我有一个基于 NewYork 的服务器,所以使用 SSR 我可以获得服务器的日期,但它总是在 CST 中显示我如何将日期更改为 DST?
解决方案
您可以使用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 }));
})
});
推荐阅读
- python - Google.colab,如何从 google.Drive 而不是本地章节导入多个图像?
- openssl - OpenSSL ECSA 签名和 Libsecp256k1
- charts - jsPDF - HTML 到 PDF 不显示 SVG(图表)
- pdf - 将 .Tif 文件转换为 PDF 的问题
- c++ - 在 C++ 中获取连接的设备名称
- cockroachdb - 对于 Cockroach DB,得到 'Caused by: org.postgresql.util.PSQLException: ERROR: root: memory budget exceeded
- pip - 尽管我刚刚安装了轮子,但它却不见了
- java - 适用于 android 的自定义 materila 日期范围选择器
- visual-studio-code - Visual Studio Code - Techer 的扩展问题“在浏览器中打开”无法使用
- swift - SwiftUI 应用程序中上下文保存的核心数据 Objective-C 异常