Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/431.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用“开始月”和“结束月”的矩获取月的范围_Javascript_Date_Momentjs - Fatal编程技术网

Javascript 使用“开始月”和“结束月”的矩获取月的范围

Javascript 使用“开始月”和“结束月”的矩获取月的范围,javascript,date,momentjs,Javascript,Date,Momentjs,我使用的是,我想用它来获得一个字符串月份数组,包括开始日期和结束日期。例如,当我有两次约会时: const from = moment('2018-05-01', 'YYYY-MM-DD').format('MMMM'); const to = moment('2018-07-01', 'YYYY-MM-DD').format('MMMM'); 然后,我如何以字符串数组的形式获取月份范围,对于给定的日期,它将如下所示: ['May', 'June', 'July'] 有没有一种方法可以让

我使用的是,我想用它来获得一个字符串月份数组,包括开始日期和结束日期。例如,当我有两次约会时:

const from = moment('2018-05-01', 'YYYY-MM-DD').format('MMMM');
  const to = moment('2018-07-01', 'YYYY-MM-DD').format('MMMM');
然后,我如何以字符串数组的形式获取月份范围,对于给定的日期,它将如下所示:

['May', 'June', 'July']

有没有一种方法可以让我们在瞬间实现这一点?最优雅的方法是什么?

请找到下面的格式

var fromDate = moment('2018-05-01','YYYY-MM-DD');
var toDate = moment('2018-07-01','YYYY-MM-DD');
var monthData = [];

while (toDate > fromDate || fromDate.format('M') === toDate.format('M')){

monthData.push(fromDate.format('MMMM'));
fromDate.add(1,'month');

}
console.log(monthData); // Output ["May", "June", "July"]
谢谢

您可以使用它并对其进行切片,从而只获得所需的月份

var months=moment.months();
log(JSON.stringify(月))
console.log(JSON.stringify(months.slice(4,7)))

只是为了展示一个没有moment.js的解决方案

月份名称可以使用ToLocalString以浏览器默认语言提供。要获取从第3个月到第5个月(含第3个月)的月份名称,请从数组中切片,例如

/*返回中月份编号范围的月份名称数组
*浏览器默认语言。
*例如,3,5使用默认语言英语返回['March'、'April'、'May]
*假设采用公历,每年12个月。如果输入无效,
*返回一个空数组
*
*@param{number | string}[startMonth=1]-日历月数
*@param{number | string}[endMonth=12]-日历月号
*@返回从startMonth到endMonth(含)的{string[]}个月名数组。
*/
var getMonthNames=(函数(){
变量月份=新数组(12).填充(0).映射((v,i)=>
新日期(2000年,i).toLocaleString(未定义,{month:'long})
);
返回函数(开始月=1,结束月=12){
返回isNaN(+开始月)| isNaN(+结束月)【】:
月.切片(--开始月,结束月);
}
}());
//范例
['03','03'],//单月
['06'],//月末
[],//第1至12个月
['01','09'],//第1个月到第9个月
['foo']//输入错误
].forEach(args=>
console.log(`${args.toString()}:${getMonthNames(…args.join(',')}`)
);