当我通过fullCalendar获得一个momentjs实例时,我想放置一个检查。
我在eventRender回调
var calendar = $('#calendar').fullCalendar('getCalendar');
var atime = calendar.moment();
var atime_h = atime.format("HH:mm");
atime = atime.unix();
var start = calendar.moment(event.start);
var start_u = start.unix();
var start_h = start.format("HH:mm");
console.log(atime);
console.log(atime_h);
console.log(start_u);
console.log(start_h);
现在记录的是:
1408024477
15:54
1407888000
00:00
1408024477 == Thu Aug 14 15:54:37 2014 ==是正确的
但是1407888000 == Wed Aug 13 02:00:00 2014,在那里我期望00:00而不是02:00
所以事件.unix()/format.()和我创建的时刻之间是有区别的。
有人知道发生了什么事吗?
编辑:因此,如果我创建两个新的时刻:moment()和moment().utc(),我将获得相同的时间戳。但是当我显示它们时,却有两个小时的差异。
.utc返回过去的两个小时,对我来说没有正确的那个。时间戳不是2小时。
但是对于事件。start(有_isUTC=true
,时间戳是未来两小时(!),格式化后显示正确。
所以也许我需要我的事件。开始不是世界标准时间,而且还晚了两个小时?
在注释中按请求编辑,这是我现在使用的:
var start = calendar.moment(event.start);
console.log(start);
start_utc = new Date(start.year(), start.month(), start.date(), start.hour(), start.minute(), start.second());
var start = calendar.moment(start_utc);
console.log(start);
尝试转换您的事件。开始日期先到utc,这是如何在香草js中做到的:
start_utc = new Date(start.getUTCFullYear(), start.getUTCMonth(), start.getUTCDate(), start.getUTCHours(), start.getUTCMinutes(), start.getUTCSeconds());
然后你可以在上面调用.unix()
,它应该会给你期望的时间戳。