Javascript - 将知道其时区的日期时间转换为 UTC

标签 javascript datetime timezone datetime-conversion ecmascript-temporal

我必须将日期时间(给定时区、年、月、日、小时和分钟)转换为 ISO 字符串。

例如,给定以下参数:

{
 timeZone: 'Europe/Paris',
 year: 2020,
 month: 11,
 day: 18,
 hours: 14,
 minutes: 44,
}

我想构建对应的 ISO 字符串:2020-11-18T13:44:00.000Z(注意那里的时差)

您可以通过 Intl.DateTimeFormattoLocaleDateString/toLocaleTimeString 方法轻松地完成此操作,但这我找不到合适的解决方案的方式... 如果我遗漏了任何信息来源,请告诉我。

编辑(见评论):

使用时区而不是 GMT 字符串(例如 'GMT +01:00')的好处是我不必处理时间变化。您可能知道,冬季时区 'Europe/Paris''GMT +01:00''GMT +022:00' 在夏天...而且我找不到将时区映射到任何 UTC 偏移量的正确方法

预先感谢您的帮助

解决方案:

如下所示,使用 Luxon 我们可以做到

const timeObject = { day, month, year, hours, minutes, zone: timeZone };
const date = DateTime.fromObject(timeObject).toUTC().toString();

Matt 还建议了现在的实验性 Temporal功能。

最佳答案

Temporal在你的浏览器引擎中可用(或者如果你使用 polyfill )那么就这样做:

Temporal.ZonedDateTime.from({
  timeZone: 'Europe/Paris',
  year: 2020,
  month: 11,
  day: 18,
  hour: 14,
  minute: 44,
}).toInstant().toString();
// => '2020-11-18T13:44:00Z'

关于Javascript - 将知道其时区的日期时间转换为 UTC,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64894427/

相关文章:

javascript - 表单验证应该如何工作?

javascript - 关闭 Angular SPA 中的浏览器窗口

python - Pandas 数据框 : group by year and month

python - 如何让 Python 从日期中提取工作日?

javascript - Angularjs 日期过滤器将时间毫秒转换为 UTC 不起作用

javascript - 调整 javascript 行

javascript - 如何从 iframe 内部关闭 iframe

mysql - mysql sql 查询中日期的逻辑

python - 如何获取系统时区设置并将其传递给 pytz.timezone?

java - hibernate 日期转换