我希望将一个特定语言环境(以IANA格式定义)的日期时间字符串转换为Date
对象,并以ISO 8601格式打印UTC时间。以下代码完美运行。
<script src="https://momentjs.com/downloads/moment.min.js"></script>
<script src="https://momentjs.com/downloads/moment-timezone-with-data.min.js"></script>
<script>
document.addEventListener('DOMContentLoaded', ()=>{
console.log(moment('2021-01-01T00:00:00').tz('America/New_York').toISOString());
});
</script>
结果是我的控制台日志显示2021-01-01T05:00:00.000Z
。
然而,我想在不使用任何第三方库的情况下实现相同的结果。我只想使用浏览器的JavaScript默认对象/类/API等……所以我尝试了所有这些方法,但它们都出现了错误:
new Date("2021-01-01T00:00:00 America/New_York").toISOString();
(new Date("2021-01-01T00:00:00")).setLocale('America/New_York').toISOString();
(new Date("January 1, 2021 12:00:00 AM America/New_York").toISOString();
如何在javascript中以正确的方式将带有区域设置的日期字符串转换为ISO 8601格式,而不使用moment、luxon等javascript库?
我需要它能够在2021年1月1日之后发布的任何桌面版Chrome、FireFox、Edge和Safari中运行(不需要支持旧版本)。