我正在使用Moment.js处理Web应用程序中的日期。服务器返回所有日期(以UTC毫秒为单位)。现在,我必须显示应用特定时区的日期(基于用户设置)。
有什么方法可以全局设置时区,而不是更改对momentjs的所有调用来处理它?
您可以使用:set the default timezone in Moment:
moment.tz.setDefault(String);
moment.tz.setDefault("America/New_York");
使用在同一网站上找到的时刻-时区库:http://momentjs.com/timezone/它让您执行以下操作:
moment(utcDateTime).tz(settings.timezone).format(settings.dateFormat);
我建议实现一个用户类/对象,该类/对象具有将UTC转换为用户时区的服务功能。看看这个小提琴:
http://jsfiddle.net/guidosch/ofd4unhu/4/
日期用作UTC,但是视图使用用户类的日期格式方法来根据用户的偏好调整和格式化UTC日期。
过去曾遇到此问题,我的解决方案是创建一个即时工厂,从基本配置中配置即时对象。您可以使它像需要矩一样透明-引用包并像矩一样使用类-但实际上,您正在调用矩包装器对象,该对象通过选定的timeZone提供矩实现。
我尚未进行广泛的测试,但是在粗略的测试中看起来不错。我能够使用Moment Timezone 0.0.1做到这一点: