【问题标题】:Moment JS and convert to local time of userMoment JS 并转换为用户的本地时间
【发布时间】:2018-11-14 22:08:47
【问题描述】:

我以为我了解如何将存储在我们数据库中的时间转换为用户本地时间,但似乎我不了解。当我将启动时间保存到我的 postresql 数据库(在 Heroku 上)时,它以 2018-11-14 19:45:00 的形式提供,我将它保存为 TIMESTAMP。在我保存它的时候我应该使用时刻吗?

运行 Heroku 日志我注意到服务器时间是2018-11-14T19:45:00.200076+00:00,也就是 UTC?

在我的节点应用程序中使用 moment JS 我正在执行以下操作

fixture.kick_off = 2018-11-14 19:45:00.000000
<%=  moment(fixture.kick_off).local().format('HH:mm A') %>

我有一个来自丹麦的用户说这显示为晚上 19​​:45,而我希望它根据时差显示为晚上 20:45

我在这里误解了什么(很可能)

谢谢

更新

我现在根据马特的回答使用以下内容

<%=  moment.utc(fixture.kick_off).local().format('HH:mm A') %>

继马特关于检查 typeof fixture.kick_off 的评论之后,它返回 object,现在已将我的代码更新为

<%  var kick_off = fixture.kick_off.toString() %>
<%=  moment.utc(kick_off).local().format('HH:mm') %>

在控制台中返回以下内容

Deprecation warning: value provided is not in a recognized RFC2822 or ISO 
format. moment construction falls back to js Date(), which is not reliable 
across all browsers and versions. Non RFC2822/ISO date formats are discouraged 
and will be removed in an upcoming major release. Please refer to 
http://momentjs.com/guides/#/warnings/js-date/ for more info.
Arguments:
[0] _isAMomentObject: true, _isUTC: true, _useUTC: true, _l: undefined, _i: Thu 
Nov 15 2018 19:00:00 GMT+0000 (Greenwich Mean Time), _f: undefined, _strict: 
undefined, _locale: [object Object]
Error

【问题讨论】:

    标签: node.js timezone momentjs


    【解决方案1】:

    假设您的数据库中存储的时间是基于 UTC 的,您只是忘记告诉 moment 了。使用moment.utc(input) 而不是moment(input)

    moment.utc(fixture.kick_off).local().format('HH:mm A')
    

    【讨论】:

    • 我知道你会来救我马特 :-) 我也刚读完这篇文章(典型的是我在提出问题后发现的)stackoverflow.com/questions/32540667/… 谢谢你抽出时间来回答,只是现在试试这个
    • 嗯,显然仍然无法正常工作,也许我的问题源于其他地方,我会调查并更新我的问题
    • 查看您的编辑,问题现在很模糊。如果 UTC 时间是 22:37,那么丹麦的时间(该日期的 UTC+1)将是 23:37,但您要的是 20:45?您能否清理一下您的问题以保持一致?
    • 抱歉,我已经清理过了,Heroku 服务器时间和英国的一样。如果这个问题仍然模糊不清,很高兴删除它并重新开始
    • 请记住,英国并不总是与 UTC 保持一致。它为 BST 执行 UTC+1。但我认为这不是你问题的根源。可能有多种事情在这里复合。我建议进行一些调试并确保 fixture.kick_off 确实是一个字符串,其值与您在此处显示的值一样(尽管您缺少引号 - 也许您没有字符串而是其他东西,例如 Date 对象?)
    猜你喜欢
    • 1970-01-01
    • 2020-09-08
    • 1970-01-01
    • 2015-07-27
    • 1970-01-01
    • 2014-04-09
    • 1970-01-01
    • 2021-01-15
    • 2019-09-09
    相关资源
    最近更新 更多