如何将日期时间字符串转换为另一个时区

问题描述 投票:0回答:1

我在给定时区有一个字符串“2024-09-19 14:20:45”,说“America/Los_Angeles”。 在javascript中,如何将其转换为另一个时区“timezone2”中的日期时间字符串,例如“America/New_York”(比洛杉矶早三个小时)?

如何在 Javascript 中的“America/New_York”示例中获取“2024-09-19 17:20:45”?

javascript datetime timezone
1个回答
0
投票

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。

© www.soinside.com 2019 - 2024. All rights reserved.