假设用户选择时间为早上7: 00作为时间,选择时区为"Africa/Blantyre“。我希望创建一个date对象,以便该值包含"Africa/Blantyre“的7:00 AM,并且当用户将时区更改为”Asia/雅加达“时,为7:00 AM "Africa/Blantyre”捕获的值应该是“Asia/雅加达”时区的值。不应是上午7:00“亚洲/雅加达”,而是“非洲/布兰太尔”的折算价值。
发布于 2022-04-22 13:08:11
您只需将时间存储为UNIX时间戳(自UNIX时代(1970年1月1日)以来的秒数,它独立于时区)并独立存储用户的当前时区。然后,在向用户显示时间之前,您可以将时间从UNIX时间戳转换为他们自己的时区格式,例如使用Date.prototype.toLocaleString()。
注意,getTime()从UNIX时代返回毫秒,所以它是UNIX时间戳* 1000。
const d1 = (new Date("2022-04-22 3:00 PM UTC+1")).getTime() // UTC+1 timezone
// store d1
const d2 = (new Date(d1)).toLocaleString('en-US', { timeZone: 'UTC' }) // UTC timezone
console.log(d2)
https://stackoverflow.com/questions/71969217
复制相似问题