我在我的Web应用程序中使用Moment.js处理日期。服务器以毫秒UTC返回所有日期。现在,我必须应用特定时区(基于用户设置)显示这些日期。
有没有全局设置时区的方法,而不是更改所有对momentjs的调用来处理它?
我在我的Web应用程序中使用Moment.js处理日期。服务器以毫秒UTC返回所有日期。现在,我必须应用特定时区(基于用户设置)显示这些日期。
有没有全局设置时区的方法,而不是更改所有对momentjs的调用来处理它?
您可以通过以下方式在Moment中设置默认时区:set the default timezone in Moment
moment.tz.setDefault(String);
moment.tz.setDefault("America/New_York");
moment-timezone
,并且使用import moment from "moment-timezone";
导入,而不是从moment
中导入moment
。 - Lauri Harpfnpm install moment-timezone
var moment = require('moment-timezone');
,使用这个对象代替通常使用的moment
。moment.tz.setDefault(String);
其中String是时区标识符。例如:
var moment = require('moment-timezone');
moment.tz.setDefault("America/New_York");
使用在同一网站上找到的 moment-timezone 库:http://momentjs.com/timezone/ 它让您可以执行以下操作:
moment(utcDateTime).tz(settings.timezone).format(settings.dateFormat);
我没有进行过广泛的测试,但是在初步测试中看起来没问题。我能够使用Moment Timezone 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);
America/New_York
? - Matt Johnson-Pint