微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在JavaScript和date-fns中始终显示日期,无论时区如何

如何解决在JavaScript和date-fns中始终显示日期,无论时区如何

我正在使用NodeJS,后者目前在本地运行,但稍后将在其他地方运行(位置未知的服务器)。我正在使用date-fns(2.14.0)和date-fns-tz(1.0.10)库。我在英国,现在我们在BST(UTC + 1)上。

我将日期存储在不同的数据库/表中,这些日期保存在不同的时区中,并且我无法更改它,必须在找到它们时与它们一起工作。

在此示例中,我将使用2个日期。我采取了一些措施,导致保存了日期。

现在的UTC时间是:2020-09-18 10:57:00,BST:2020-09-18 11:57:00。对于这些示例,我将四舍五入到最近的分钟。

  1. TableA.Date = 2020-09-18 06:57:00
  2. TableB.Date = 2020-09-18 10:57:00

因此我可以看到TableA.Date保存在UTC-4中,而TableB.Date保存在UTC中。我相信UTC-4是美国东部夏令时(EDT)-美国波士顿,“美国/纽约”(IANA)。

我想在我的应用程序中以UTC显示所有日期,以便为用户提供一致的视图,并且用户将在世界范围内进行查看。

这甚至有可能吗?。

更新

我现在有这个:

function test (dateStr,tz) {
  const toUtc = dateFnsTz.zonedTimetoUtc(dateStr,tz)
  const toZonedTime = dateFnsTz.utcToZonedTime(toUtc,'UTC')
  const formatted = dateFnsTz.format(toZonedTime,'dd MMM yyyy HH:mm:ss','UTC')

  console.log(formatted)

  return null
}

test('2020-09-18 06:57:00','America/New_York') // 18 Sep 2020 10:57:00
test('2020-09-18 10:57:00','UTC')              // 18 Sep 2020 10:57:00
test('2020-09-18 11:57:00','Europe/London')    // 18 Sep 2020 10:57:00

这是否能够持续工作,还是会打破夏令时或其他任何功能??

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。