繁体   English   中英

在 JavaScript 中,有没有办法在不使用 toLocaleString 的情况下将日期转换为时区?

[英]In JavaScript, is there a way to convert a Date to a timezone without using toLocaleString?

我发现toLocaleString可以有效地将时间转换为不同的时区,正如已经在这个问题上讨论的那样。 例如,要打印纽约的时间:

console.log(new Date().toLocaleString("en-US", {timeZone: "America/New_York"}))
"5/26/2020, 1:27:13 PM"

那太棒了; 这段代码告诉我现在在纽约的时间,但仅限于字符串格式。 如果我想根据时间做一些程序化的事情,我将不得不解析那个字符串。

有没有办法可以生成具有特定时区的日期 object ,而不将其强制转换为字符串? 例如,我想要这个虚构的 function:

const newYork = new Date().toTimezone('America/New_York')
console.log(newYork.getHours(), newYork.getMinutes())
13 27     // <--- 13:27 (1:27pm) in New York, not the browser's timezone

JavaScript 有可能吗?

不幸的是,不——这对于Date object 是不可能的。

您可以使用诸如Luxon 之类的库来执行此操作,但在内部它确实是在操作toLocaleString的字符串结果来完成此操作。

const newYork = luxon.DateTime.local().setZone('America/New_York');
console.log(newYork.hour, newYork.minute); // just an example, like in your question

ECMAScript Temporal 提案正在努力在未来改进这些事情。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM