moment.js 加不加时间
moment.js add doesn't add time
当我
----编辑----
var someMoment = moment('6:30 PM', ["h:mm A"]);
----结束编辑----
someMoment.add(30, 'minutes')
我似乎没有得到任何结果。
console.log(start); -- Moment {_isAMomentObject: true, _i: "6:30 PM", _f: "h:mm A", _isUTC: false, _pf: Object…}
console.log(start.add(inc, 'minutes')); --Moment {_isAMomentObject: true, _i: "6:30 PM", _f: "h:mm A", _isUTC: false, _pf: Object…}
文档说 add 会改变指定的时刻,所以上面的方法应该有效,但我也试过了
var end = start.add(inc, 'minutes')
console.log(end); --Moment {_isAMomentObject: true, _i: "6:30 PM", _f: "h:mm A", _isUTC: false, _pf: Object…}
不过我能做的就是这个
console.log(start.add(inc, 'minutes').format("h:mm A")); --7:00 PM
我想要的是花一点时间,加上 30 分钟,最好有一个提前 30 分钟的新时刻,或者至少让初始时刻提前 30 分钟。
我知道我可以把格式拿出来放在一个新的时刻,我想我会的,但这似乎有点坏了。
----编辑----
使用时刻 2.1
我是从我的应用程序中的一个方法中获取它的,我没有将它隔离在 jsfiddle 或任何东西中,但是该方法需要一个字符串和一个增量。我想我会把它贴在这里
这里我正在尝试一种方法,但我也尝试过使用修改后的开始并克隆开始
var timeIsBetweenStartInc = function(_target:string, _start:string, inc:int){
var target = moment(_target, ["h:mm A"]);
var start = moment(_start, ["h:mm A"]);
console.log(start);
var end = moment(start).add(inc, 'minutes');
console.log(end);
return target.isBetween(start, end, 'minutes', '[)');(target, start, end);
};
----结束编辑----
您似乎相信 Moment
对象 (_i
) 的某些内部属性包含调整后的时间。可能是操作被延迟应用,或者那些内部正在跟踪 原始 时间,但是一旦你真正对对象做了任何事情(比如调用 .format()
),显示的是调整后的时间。
编辑:或者您使用的是 Moment.js 的过时版本。看起来版本 1 表现出与您所看到的相似的行为。但是,您可能正在查看最新的 (v2) 文档,因此文档与观察到的行为之间存在差异。
What I want is to take a moment, add 30 minutes to it and, preferably have a new moment that is 30 minutes ahead, or at least have the initial moment be 30 minutes ahead.
var start = moment();
var end = moment(start).add(30, 'minutes');
console.log( start.toString() );
console.log( end.toString() );
我怀疑 Moment.js 也完全按照您的预期工作,但 console.log 不是。它打印了对象的引用,所以你看到的状态是查询时的当前状态,而不是调用log()时的状态。尝试使用 console.dir() 来查看差异。或者使用 JSON.stringify() 获取对象的字符串表示形式,或者在 Moment 对象上调用 format()。
Moment.js 有一个 clone
方法,你可以这样使用:
var now = moment(),
future = now.clone();
然后您可以为克隆时刻添加一些时间:
future.add(30, "minutes");
现在,如果您比较这两个时刻的 UNIX 时间戳...
future.unix() - now.unix();
您会注意到它们相隔 1800 秒 = 30 分钟。
当我
----编辑----
var someMoment = moment('6:30 PM', ["h:mm A"]);
----结束编辑----
someMoment.add(30, 'minutes')
我似乎没有得到任何结果。
console.log(start); -- Moment {_isAMomentObject: true, _i: "6:30 PM", _f: "h:mm A", _isUTC: false, _pf: Object…}
console.log(start.add(inc, 'minutes')); --Moment {_isAMomentObject: true, _i: "6:30 PM", _f: "h:mm A", _isUTC: false, _pf: Object…}
文档说 add 会改变指定的时刻,所以上面的方法应该有效,但我也试过了
var end = start.add(inc, 'minutes')
console.log(end); --Moment {_isAMomentObject: true, _i: "6:30 PM", _f: "h:mm A", _isUTC: false, _pf: Object…}
不过我能做的就是这个
console.log(start.add(inc, 'minutes').format("h:mm A")); --7:00 PM
我想要的是花一点时间,加上 30 分钟,最好有一个提前 30 分钟的新时刻,或者至少让初始时刻提前 30 分钟。
我知道我可以把格式拿出来放在一个新的时刻,我想我会的,但这似乎有点坏了。
----编辑----
使用时刻 2.1
我是从我的应用程序中的一个方法中获取它的,我没有将它隔离在 jsfiddle 或任何东西中,但是该方法需要一个字符串和一个增量。我想我会把它贴在这里
这里我正在尝试一种方法,但我也尝试过使用修改后的开始并克隆开始
var timeIsBetweenStartInc = function(_target:string, _start:string, inc:int){
var target = moment(_target, ["h:mm A"]);
var start = moment(_start, ["h:mm A"]);
console.log(start);
var end = moment(start).add(inc, 'minutes');
console.log(end);
return target.isBetween(start, end, 'minutes', '[)');(target, start, end);
};
----结束编辑----
您似乎相信 Moment
对象 (_i
) 的某些内部属性包含调整后的时间。可能是操作被延迟应用,或者那些内部正在跟踪 原始 时间,但是一旦你真正对对象做了任何事情(比如调用 .format()
),显示的是调整后的时间。
编辑:或者您使用的是 Moment.js 的过时版本。看起来版本 1 表现出与您所看到的相似的行为。但是,您可能正在查看最新的 (v2) 文档,因此文档与观察到的行为之间存在差异。
What I want is to take a moment, add 30 minutes to it and, preferably have a new moment that is 30 minutes ahead, or at least have the initial moment be 30 minutes ahead.
var start = moment();
var end = moment(start).add(30, 'minutes');
console.log( start.toString() );
console.log( end.toString() );
我怀疑 Moment.js 也完全按照您的预期工作,但 console.log 不是。它打印了对象的引用,所以你看到的状态是查询时的当前状态,而不是调用log()时的状态。尝试使用 console.dir() 来查看差异。或者使用 JSON.stringify() 获取对象的字符串表示形式,或者在 Moment 对象上调用 format()。
Moment.js 有一个 clone
方法,你可以这样使用:
var now = moment(),
future = now.clone();
然后您可以为克隆时刻添加一些时间:
future.add(30, "minutes");
现在,如果您比较这两个时刻的 UNIX 时间戳...
future.unix() - now.unix();
您会注意到它们相隔 1800 秒 = 30 分钟。