使用ISO日期字符串将日期从一个时区转换为另一个时区



我想将日期(10/14/2022 8:04 PM(从America/New_York时区
转换为Asia/Tokyo'时区,如下所示
我使用了ISO格式的"亚洲/东京"时区。但我在转换后少了一个小时
,因为08:04:00 p.m. Friday October 14, 2022 in America/New_York
转换为09:04:00 a.m. Saturday October 15, 2022 in Asia/Tokyo.

即使对于其他时区,我也尝试过,但问题是一样的
请帮助我理解此代码中的问题

let d = new Date('2022-10-14T20:04:00.000+09:00')
console.log(
d.toLocaleString('ko-KR', {
timeZone:'Asia/Tokyo', 
hour12:false
})
);

结果为:2022. 10. 14. 20시 4분 0초

纽约时区是-4小时(而不是+9小时(
请参阅https://en.wikipedia.org/wiki/List_of_tz_database_time_zones

以美国/纽约的10/14/2022 8:04 PM为例:

let dateUTC = new Date('2022-10-14T20:04:00.000-04:00') 
console.log('Verify America/New_York date value: (where timeZone is -4 hours according DST)')
console.log( 'America/New_York -->', dateUTC.toLocaleString('en-US', { timeZone: 'America/New_York', hour12:true }) )

console.log( 'nAsia/Tokyo -->', dateUTC.toLocaleString('ko-KR', { timeZone: 'Asia/Tokyo', hour12:false }) )
.as-console-wrapper {max-height: 100% !important;top: 0;}
.as-console-row::after {display: none !important;}

正如你所看到的,没有转换要做。只需设置正确的日期值,指示其原始时区偏移(注意可能的夏令时[DST](
然后只需显示您的日期/时间以及您想要的本地值。

最新更新