【问题标题】:How to change Moment.js Timezone defaults?如何更改 Moment.js 时区默认值?
【发布时间】:2020-07-24 07:09:18
【问题描述】:

我正在运行一个节点 js - 使用 moment.js 表达 api。 我目前的 TZ 位置是欧洲/柏林。(本地) 我的开发环境(本地)和生产环境之间存在不一致的状态。 在开发/本地环境中使用时刻库​​时,我得到了 120 分钟的 UTC 偏移量。但是 Google Cloud 标准 AppEngine 没有偏移量。所以我得到了一个日期,比需要的时间少 2 小时。 我搜索了一段时间,但没有找到正确的答案来设置本地时区或本地偏移量以供 appengine 使用。

有人知道如何在不更改所有日期解析语句的情况下在全球范围内解决此问题吗? --> 时刻()

【问题讨论】:

    标签: javascript node.js google-app-engine momentjs


    【解决方案1】:

    如果您想暂时设置全局时区,您可以这样做

    const moment = require('moment-timezone')
    
    moment.tz.setDefault('Europe/Berlin')
    

    https://momentjscom.readthedocs.io/en/latest/moment/03-manipulating/09-utc-offset/

    【讨论】:

    • 我已经尝试过使用 moment-timezone 插件,但它不起作用
    • 有趣。好吧,我建议将时间戳存储在 unix 时间并转换为您的时区。
    • 我必须更新js文件中所有必需的语句吗?
    • 我已经添加到 app.js: var moment = require('moment-timezone'); moment.tz.setDefault('欧洲/柏林'); // 现在我看到所需的偏移量 console.log(moment()) console.log(moment().format("YYYY-MM-DD HH:mm:ss")) console.log(moment().utcOffset( )) console.log(new Date()) //当从数据库解析某事时 Thu Apr 09 2020 09:24:58 GMT+0200 (GMT+02:00) 它仍然会在此刻输出 2h 到很多(Thu 2020 年 4 月 9 日 09:24:58 GMT+0200 (GMT+02:00)).format('YYYY-MM-DD HH:mm:ss')
    【解决方案2】:

    您可以使用全局实例并使用 moment.tz 更改 tz

    更多:https://momentjscom.readthedocs.io/en/latest/moment-timezone/01-using-timezones/05-default-timezone/

    moment.tz.setDefault("Europe/Berlin");
    

    也可以查看TZ列表:

    How to get list of all timezones in javascript

    【讨论】:

      猜你喜欢
      • 2019-05-19
      • 1970-01-01
      • 2015-11-15
      • 1970-01-01
      • 2012-11-25
      • 2011-09-16
      • 2015-04-06
      • 2023-03-27
      • 1970-01-01
      相关资源
      最近更新 更多