Javascript 设置全局时区
我正在使用Moment.js处理web应用程序中的日期。服务器以毫秒UTC为单位返回所有日期。现在,我必须显示应用特定时区的日期(基于用户设置)Javascript 设置全局时区,javascript,datetime,timezone,momentjs,Javascript,Datetime,Timezone,Momentjs,我正在使用Moment.js处理web应用程序中的日期。服务器以毫秒UTC为单位返回所有日期。现在,我必须显示应用特定时区的日期(基于用户设置) 有没有办法全局设置时区,而不是更改对momentjs的所有调用来处理它?我没有做过大量的测试,但在粗略的测试中看起来不错。我可以在时刻时区0.0.1中实现这一点: var serverTimezoneOffset = <?php echo timezone_offset_get(new DateTimeZone(date_default_time
有没有办法全局设置时区,而不是更改对momentjs的所有调用来处理它?我没有做过大量的测试,但在粗略的测试中看起来不错。我可以在时刻时区0.0.1中实现这一点:
var serverTimezoneOffset = <?php echo timezone_offset_get(new DateTimeZone(date_default_timezone_get()), new DateTime('now')) / -60; ?>;
moment.updateOffset(new Date().getTimezoneOffset()-serverTimezoneOffset);
var serverTimezoneOffset=;
moment.updateOffset(新日期().getTimezoneOffset()-serverTimezoneOffset);
在过去遇到过这个问题,我的解决方案是创建一个力矩工厂,从基本配置中配置力矩对象。您可以使其与需要时刻一样透明—引用您的包并像使用时刻一样使用类—但实际上您正在调用一个时刻包装器对象,该对象为时刻实现提供所选时区。使用同一网站上的时刻时区库:
它让你做一些事情,比如:
moment(utcDateTime).tz(settings.timezone).format(settings.dateFormat);
我建议实现一个用户类/对象,该类/对象具有将UTC转换为用户时区的服务功能。看看这把小提琴:
日期用作UTC,但视图使用用户类的日期格式方法根据用户的首选项调整UTC日期并设置其格式。您可以使用:
moment.tz.setDefault(String);
例如
npm安装时刻时区
var moment=require('moment-timezone')代码>并使用此对象
而不是通常的时刻
moment.tz.setDefault(字符串)代码>字符串所在的位置
var moment = require('moment-timezone');
moment.tz.setDefault("America/New_York");
文档:您是指用户计算机的本地时区吗?或者您是指来自您自己代码的时区字符串,如
美国/纽约
?我是指来自服务器的时区字符串,如美国/纽约。我知道我可以用momentjs时区处理。我的问题是:如何在应用程序启动时设置一次,而不是用moment().tz('America/New_York')修改对moment()的所有调用?抱歉,该功能不存在。您可以在中请求它。谢谢,谢谢,马特。我刚刚打开了一个。效果很好,只需记住从npm添加时刻时区
,从“时刻时区”添加时刻代码>而不是从时刻
导入时刻
。
var moment = require('moment-timezone');
moment.tz.setDefault("America/New_York");