Javascript 如何使用momentjs在angularjs中设置应用程序范围的时区
我有一个服务器在一个时区中存储时间戳,而用户则生活在另一个时区中。我的印象是充当了一种装饰者,如果我定义了一个时区Javascript 如何使用momentjs在angularjs中设置应用程序范围的时区,javascript,angularjs,timezone,momentjs,Javascript,Angularjs,Timezone,Momentjs,我有一个服务器在一个时区中存储时间戳,而用户则生活在另一个时区中。我的印象是充当了一种装饰者,如果我定义了一个时区 moment.tz.setDefault("Europe/Copenhagen"); 随后,矩函数的使用将使用定义的时区 var date = moment(timestamp_from_server).calendar() 在我的例子中,在所有时间戳中添加一个小时。但这显然不起作用 有没有可能设置一个“全局”或应用程序范围的时区,这样我就不必转换代码中的每个时间戳,只需依赖
moment.tz.setDefault("Europe/Copenhagen");
随后,矩函数的使用将使用定义的时区
var date = moment(timestamp_from_server).calendar()
在我的例子中,在所有时间戳中添加一个小时。但这显然不起作用
有没有可能设置一个“全局”或应用程序范围的时区,这样我就不必转换代码中的每个时间戳,只需依赖momentjs方法?任何建议,以及替代方案都将受到高度赞赏
注意:我使用AngularJS,在中设置时区
app.run(function(...) {
...
moment.tz.setDefault("Europe/Copenhagen")
})
但我不认为这有任何重要性 您可以使用 如果您不想使用此模块
装饰程序
或应用程序。在服务中运行
或设置
本身非常简单。但在现有项目中应用时区时,请确保时区的更改不会影响使用momentjs的现有日期函数
使用工厂设置默认时区的简单实现
因为工厂是单例的,所以只创建一个
嘿,塞缪尔,这是一个极简主义的回答:)真的很感激,但具体怎么说呢?我在angularjs中使用momentjs没有问题(这就是为什么我的意思是角度对这个问题根本不重要,你在编辑中更强调了角度),但是除了提供一些有用的过滤器之外,我看不到使用角度矩的任何理由。为什么会有什么不同?@davidkonrad除了有用的过滤器和指令之外,这个模块还有助于在应用程序范围内建立一致的时区。这样您就可以轻松地转换服务器时间戳。@davidkonrad我已经更新了关于您的评论的答案。如果您只需要在工厂中应用时区,那么您可以这样做,因为服务是单例的,您可以在该服务本身设置时区。如果你选择了整个应用程序的设置,你需要考虑在代码< >代码> App.Run.()中设置的副作用:“代码> > Apple。{date | amLocal | amCalendar}不起作用。而且它完全接管了力矩,您需要通过角力矩本身进行本地化/tz等,所以放弃了这个想法,我只是将所有
力矩()
引用更改为力矩().local()
。无论如何都接受这个答案,如果你从头开始一个新项目,使用角力矩可能更容易或更直观。
。。,