无论时区如何,在JavaScript中始终显示日期&;日期fns

无论时区如何,在JavaScript中始终显示日期&;日期fns,javascript,datetime,date-fns,Javascript,Datetime,Date Fns,我在NodeJS中工作,它目前在本地运行,但稍后将在其他地方运行(位置未知的服务器)。我正在使用日期fns(2.14.0)和日期fns tz(1.0.10)库。我在英国,现在我们在英国夏令时(UTC+1) 我的日期存储在不同的数据库/表中,日期保存在不同的时区,我无法更改此设置,我必须在找到它们时使用它们 在本例中,我将使用2个日期。我采取了一些措施来保存日期 现在的UTC时间是:2020-09-18 10:57:00,英国夏令时:2020-09-18 11:57:00。对于这些例子,我将四舍五

我在NodeJS中工作,它目前在本地运行,但稍后将在其他地方运行(位置未知的服务器)。我正在使用
日期fns
(2.14.0)和
日期fns tz
(1.0.10)库。我在英国,现在我们在英国夏令时(UTC+1)

我的日期存储在不同的数据库/表中,日期保存在不同的时区,我无法更改此设置,我必须在找到它们时使用它们

在本例中,我将使用2个日期。我采取了一些措施来保存日期

现在的UTC时间是:2020-09-18 10:57:00,英国夏令时:2020-09-18 11:57:00。对于这些例子,我将四舍五入到最接近的一分钟

  • 表a.日期=2020-09-18 06:57:00
  • 表B.日期=2020-09-18 10:57:00
  • 所以我可以看到TableA.Date保存在UTC-4中,TableB.Date保存在UTC中。我相信UTC-4是东部夏令时(EDT)-美国波士顿,“美国/纽约”(IANA)

    我希望在我的应用程序中以UTC显示所有日期,以便为用户提供一致的视图,并且用户将从世界各地查看

    这可能吗

    更新

    我现在有:

    功能测试(dateStr,tz){
    const toUtc=dateFnsTz.zonedtimeoutc(dateStr,tz)
    const toZonedTime=dateFnsTz.utcToZonedTime(toUtc,'UTC')
    const formatted=dateFnsTz.format(toZonedTime,'dd-MMM-yyyy-HH:mm:ss,'UTC')
    console.log(格式化)
    返回空
    }
    测试('2020-09-18 06:57:00','America/New_York')//2020年9月18日10:57:00
    测试('2020-09-18 10:57:00','UTC')//2020年9月18日10:57:00
    测试('2020-09-18 11:57:00','Europe/London')//2020年9月18日10:57:00
    

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

    是的,如果您知道将存储日期调整为UTC所需的偏移量,则可以这样做。希望已经使用了一个固定的偏移量,否则您可能会受到夏令时更改的影响。顺便说一句,问题的标题似乎与你想做的相反。@RobG谢谢!我添加了一个带有一些代码的更新。你觉得这样对吗。。?在标题上,我不确定您的意思,我希望以UTC一致地显示日期。您的问题是使用特定位置/时区解析时间戳,显示部分实际上是次要的。不管怎样,你加的那一点是可以的。我认为date fns tz使用与Luxon相同的方法,两者都基于对的支持。我看到的唯一问题是试图解析一个不存在的时间戳,或者在夏令时转换期间在指定位置存在两次。但是如果原件是有效的,那就不应该发生。@RobG Brilliant,再次感谢你!