打字稿:任何人都有一种优雅的方式来接收具有已知时区的日期字符串并将其转换为 UTC

Typescript: Anyone have an elegant way to take in a date string with a known timezone and convert it to UTC

这个问题已经出现了一千多次,但是 none 的答案在 Typescript 中成功地完成了这个非常简单的事情。我有一个美国 Central/Chicago(UTC-5 或 -6,取决于夏令时)时间日期字符串从集成商输入我的服务,如下所示:

"May 25, 2021 04:39:54 PM"

这种日期字符串格式总是会以这种形式进入我的系统,幸运的是它被新的 Date 构造函数所接受,但事实证明仅使用 Date 是徒劳的。我的节点服务以 UTC 处理一切。我需要使用“2021 年 5 月 25 日 04:39:54 下午”并进入一个 UTC 日期对象,这样我就可以 consume/compare/etc.

看起来很简单,但我找不到 Typescript 的工作示例。我想要一些简单的东西,可以为我调整时间,例如:

const utcDate = new someDateLib("May 25, 2021 04:39:54 PM", "Central/Chicago");

有没有人对此有一个优雅的解决方案?

使用 Luxon 你可以这样做:

const jsDateInChicago = DateTime.fromFormat(
  "May 25, 2021 04:39:54 PM",
  "LLLL dd, yyyy hh:mm:ss a",
  { zone: "Central/Chicago" }
).toJSDate()

第一个参数是要解析的字符串,第二个参数描述第一个参数的日期格式,第三个参数让您指定此时间戳来自的时区。