JavaScript 中将日期转换为英国时间

本文介绍了如何使用 JavaScript 将日期转换为英国时间,涵盖了夏令时(BST)和格林威治标准时间(GMT)的自动处理。通过 `Date.toLocaleString()` 方法和 `Europe/London` 时区,可以轻松地将 UTC 时间转换为正确的英国本地时间,并避免手动处理夏令时的复杂性。

在 JavaScript 中处理日期和时间时,经常需要将其转换为特定的时区。对于英国用户来说,这意味着要考虑到格林威治标准时间(GMT)和英国夏令时(BST)之间的转换。手动处理这些转换可能会很复杂且容易出错。幸运的是,JavaScript 提供了强大的 Date.toLocaleString() 方法,可以轻松地处理时区转换。

Date.toLocaleString() 方法允许您以特定于语言环境的格式显示日期和时间。它还支持指定时区,从而可以自动处理夏令时转换。

要将日期转换为英国时间,可以使用 Europe/London 时区。此时区标识符会自动处理 GMT 和 BST 之间的转换,确保您始终获得正确的英国本地时间。

以下是一个示例,演示如何使用 Date.toLocaleString() 方法将 UTC 时间转换为英国时间:

const timestamps = ['2025-06-17T06:30:00.000Z', '2025-12-17T06:30:00.000Z'];

for(let timestamp of timestamps) {
    const date = new Date(timestamp);
    const locale = 'en-GB';
    console.log('Timestamp:', timestamp)
    console.log('UTC Time: ',  date.toLocaleString(locale, { timeZone: 'UTC' }))
    console.log('UK time:  ', date.toLocaleString(locale, { timeZone: 'Europe/London' }))
}

代码解释:

  1. timestamps 数组: 包含了两个日期字符串,分别代表夏季和冬季的日期。
  2. for...of 循环: 遍历 timestamps 数组中的每个时间戳。
  3. new Date(timestamp): 将时间戳字符串转换为 Date 对象。
  4. locale = 'en-GB': 设置语言环境为英国英语,这会影响日期和时间的格式。
  5. date.toLocaleString(locale, { timeZone: 'UTC' }): 将日期格式化为 UTC 时间,使用英国英语的格式。
  6. date.toLocaleString(locale, { timeZone: 'Europe/London' }): 将日期格式化为英国本地时间(GMT 或 BST),使用英国英语的格式。Europe/London 时区标识符会自动处理夏令时转换。

输出结果:

上面的代码将输出以下结果:

Timestamp: 2025-06-17T06:30:00.000Z
UTC Time:  17/06/2025, 06:30:00
UK time:   17/06/2025, 07:30:00
Timestamp: 2025-12-17T06:30:00.000Z
UTC Time:  17/12/2025, 06:30:00
UK time:   17/12/2025, 06:30:00

如您所见,Europe/London 时区会自动处理夏令时,在夏季将时间提前一小时。

注意事项:

  • 确保您的 JavaScript 运行时环境支持 IANA timezone 数据库。大多数现代浏览器和 Node.js 环境都支持。
  • Date.toLocaleString() 方法的输出格式可能因浏览器和语言环境而异。如果您需要特定的格式,可以使用 Intl.DateTimeFormat 对象进行更精细的控制。
  • 时区数据可能会更新,因此建议定期更新您的 JavaScript 运行时环境,以确保您拥有最新的时区信息。

总结:

使用 Date.toLocaleString() 方法和 Europe/London 时区是 JavaScript 中将日期转换为英国时间的最简单和最可靠的方法。它自动处理夏令时转换,避免了手动处理的复杂性。通过理解和使用此方法,您可以轻松地在您的 JavaScript 应用程序中处理英国时间。