[英]Heroku Timezone Issue with Moment.js
在我的production / heroku应用程序中,下面的代码返回的小时数比在我的开发/本地应用程序中运行时代码返回的小时数多7小时。 为什么是这样?
var startDate = moment.tz("2000-01-01", "America/Edmonton").startOf('day');
var endDate = moment.tz("America/Edmonton");
hourly_count = parseInt(endDate.diff( startDate, 'hours' ) + 1 );
Heroku存在一些问题。 它会自动将其计算为UTC。
码
var tms = 1492554237000
console.log(moment(tms).format("YYYY-MM-DD HH:mm:ss"))
console.log(moment.utc(tms).format("YYYY-MM-DD HH:mm:ss"))
当地产出
2017-04-19 06:23:57
2017-04-18 22:23:57
heroku服务器输出
2017-04-18 22:23:57
2017-04-18 22:23:57
我通过调整时间戳来解决它。
if (moment().utcOffset() == -0){
// for server
tms += 28800000
}
Heroku服务器输出新
2017-04-19 06:23:57
2017-04-19 06:23:57
因为您使用moment-timezone指定了命名时区,所以在本地计算机和服务器之间产生不同结果的原因只有两个:
未在一个或两个设备上正确设置时钟。 可能Heroku的时钟很好,所以看看你的。
您没有将任何时区数据加载到时刻时区。 在这种情况下,较旧版本的时刻 - 时区会无声地回落到当地时间。 较新的版本会出错。
您应该使用其中一个“with-data”发行版,或者通过moment.tz.add
函数加载您感兴趣的时区数据。
由于这个问题写于2014年,这可能是第二个问题。
您正在部署的目标计算机可能是UTC,您将要设置它或使用Moment Timezone。 http://momentjs.com/timezone/
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.