流星上的 Moment.js,时区问题

脚本小子

我一直在试图找出 moment-timezone.js 的问题。我似乎无法将时间戳从 UTC 转换为 PST

我使用的辅助函数是 timeInTimeZone。请原谅可怕的变量名。

非常感谢任何帮助调试问题

Template.home.helpers({
  timezone: function() {
    return Template.instance().timezone.get();
  },
  timeInTimeZone : function(){
    let time   = moment( this.createdAt ),
        format = 'dddd, MMMM Do YYYY h:mm a';

    var timezone = Template.instance().timezone.get();
    console.log(time.format( format )); //works
    console.log(timezone); //works

    var editedTime = time.tz( timezone ).format( format ); //breaks
    console.log(editedTime);
    return editedTime;

  }
});

我在使用时得到的日志如下:

2018 年 2 月 17 日星期六上午 1:11 home.js:141:5 America/Vancouver home.js:142:5 模板助手中的异常:timeInTimeZone@ http://localhost:3000/app/client/views/pages/home ?的.js散列= f7d8b7711106080a4d6fbb1d2089cf344f59223d:143:22 bindDataContext / <@ HTTP://本地主机:3000 /包/ blaze.js散列= a1ff2d6d5ecd59ee11e2ba260b8650a9d1140f59:3051:14个Blaze._wrapCatchingExceptions / <@ HTTP://本地主机:3000 /包/blaze.js?hash=a1ff2d6d5ecd59ee11e2ba260b8650a9d1140f59:1715:14 wrapHelper / HTTP://本地主机:3000 /包/ blaze.js哈希= a1ff2d6d5ecd59ee11e2ba260b8650a9d1140f59:3103:14 Template._withTemplateInstanceFunc @ HTTP://本地主机:3000 /包/火焰.js?hash=a1ff2d6d5ecd59ee11e2ba260b8650a9d1140f59:3744:12 wrapHelper/<@HTTP://本地主机:3000 /包/ blaze.js散列= a1ff2d6d5ecd59ee11e2ba260b8650a9d1140f59:3102:12 Spacebars.call @ HTTP://本地主机:3000 /包/ spacebars.js散列= 547cf8e466d1d52603d19bd5f48fb5df184fd237:172:12个Spacebars.mustacheImpl @ HTTP://本地主机:3000 /包/ spacebars.js散列= 547cf8e466d1d52603d19bd5f48fb5df184fd237:106:10 Spacebars.mustache @ HTTP://本地主机:3000 /包/ spacebars.js散列= 547cf8e466d1d52603d19bd5f48fb5df184fd237:110:16 Template.homehttp: //localhost:3000/app/client/views/pages/template.home.js?hash=be956f7036145947c4a904d9c42627576e740dd1:82:14 doRender@ http://localhost:3000/packages/blaze.js?hash=a510d8040500000000000viewAutorun / HTTP://本地主机:3000 /包/ blaze.js散列= a1ff2d6d5ecd59ee11e2ba260b8650a9d1140f59:1934:18 Template._withTemplateInstanceFunc @ HTTP://本地主机:3000 /包/ blaze.js散列= a1ff2d6d5ecd59ee11e2ba260b8650a9d1140f59:3744:12 viewAutorun / <@ HTTP://本地主机:3000 /包/ blaze.js散列= a1ff2d6d5ecd59ee11e2ba260b8650a9d1140f59:1932:14 Blaze._withCurrentView @ HTTP://本地主机:3000 /包/ blaze.js散列= a1ff2d6d5ecd59ee11e2ba260b8650a9d1140f59:2271:12 viewAutorun @ HTTP://本地主机:3000 /包/ blaze.js散列= a1ff2d6d5ecd59ee11e2ba260b8650a9d1140f59:1931:12 Tracker.Computation.prototype._compute @ HTTP://本地主机:3000 /包/ tracker.js散列= 0e8b5c18d543a28ce43b2f183c26b49ee62196af:339:5Tracker.Computation.prototype._recompute@ http://localhost:3000/packages/tracker.js?hash=0e8b5c18d543a28ce43b2f183c26b49ee62196af:358:9 Tracker._runFlush@ http://localhost:3000/packages/tracker.js?hash=0e8b5c18d543a28ce43b2f183c26b49ee62196af :9 :532:9 onGlobalMessage@ http://localhost:3000/packages/meteor.js?hash=b0f12795c8cc1423b5850502871996903f947ed5:448:11

我尝试使用meteor npm重新安装 moment 和 momnet-timezonemeteor add

我知道这与 time.tz() 有关,传递给它的是以下内容 America/Vancouver

脚本小子

虽然我找不到 .tz() 函数的正确解决方案,但我暂时正在浏览文档

我最终使用了这段代码

timeInTimeZone : function(){
    var date = moment.utc(this.createdAt); //take the date in UTC format
    return date.local().format("ddd, MMM D YYYY h:mma"); //Return the date in user's local time
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章