对于我的应用,我需要在片刻js中具有以下功能。
var nDay = moment(2007, 0, 28).next('date'); //--> 2007-0-29T00:00:00.00
var pDay = moment(2007, 0, 28).previous('date'); //--> 2007-0-27T00:00:00.00
类似地:
.next('week'), .next('month')
并获取特定日期。
我知道momentjs有操纵方法,但使用它们是一种痛苦,因为它会改变原始方法。即使使用.clone()
,也不容易。
那么大家,如何在片刻或者js中实现这个next()
和previous()
方法?
或者,在某一天之后找到这一天的最简单方法是什么?
答案 0 :(得分:2)
正如您在问题中所说,您可以使用add
和subtract
等时刻操作函数以及clone
来避免原始对象变异。
添加自定义功能以便使用moment.fn
。
时刻操纵函数接受'months'
,'weeks'
,'days'
等作为参数,而您似乎想要使用'month'
,'week'
,{{ 1}},因此您需要将输入字符串转换为等效的时刻。
这里有一个工作示例:
'date'
moment.fn.next = function(unit){
// Convert input to strings used by moment
unit = unit === 'date' ? 'days' : unit;
if( unit === 'month' || unit === 'week'){
unit += 's';
}
return this.clone().add(1, unit);
}
moment.fn.previous = function(unit){
// Convert input to strings used by moment
unit = unit === 'date' ? 'days' : unit;
if( unit === 'month' || unit === 'week'){
unit += 's';
}
return this.clone().subtract(1, unit);
}
var nDay = moment([2007, 0, 28]).next('date');
var pDay = moment([2007, 0, 28]).previous('date');
var nMonth = moment([2007, 0, 28]).next('month');
console.log(nDay.format());
console.log(pDay.format());
console.log(nMonth.format());