我在给定时区有一个字符串“2024-09-19 14:20:45”,说“America/Los_Angeles”。 在javascript中,如何将其转换为另一个时区“timezone2”中的日期时间字符串,例如“America/New_York”(比洛杉矶早三个小时)?
如何在 Javascript 中的“America/New_York”示例中获取“2024-09-19 17:20:45”?
const inputDateStr = "2024-09-19 14:20:45";
const timezone1 = "America/Los_Angeles";
const timezone2 = "America/New_York";
// Convert inputDateStr to a Date object in UTC, assuming it's in timezone1
const dateInLA = new Date(`${inputDateStr} UTC`);
// Use Intl.DateTimeFormat to convert the date to timezone2
const options = {
timeZone: timezone2,
year: 'numeric',
month: '2-digit',
day: '2-digit',
hour: '2-digit',
minute: '2-digit',
second: '2-digit',
};
const dateFormatter = new Intl.DateTimeFormat('en-US', options);
const parts = dateFormatter.formatToParts(dateInLA);
const formattedDate = `${parts[4].value}-${parts[0].value}-${parts[2].value} ${parts[6].value}:${parts[8].value}:${parts[10].value}`;
console.log(formattedDate); // "2024-09-19 17:20:45"
在此方法中:
new Date():我们解析字符串并假设它是 UTC。
Intl.DateTimeFormat:用于将日期格式化为所需的时区,America/New_York。