我使用的是moment library,我想用它来获取字符串月的数组,并带有开始日期和结束日期。因此,例如当我有两个日期时:
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']
有没有一种方法可以立即实现,而最优雅的方法是什么?
答案 0 :(得分:2)
您可以使用moment.months对其进行切片以仅获得所需的月份
var months = moment.months();
console.log(JSON.stringify(months))
console.log(JSON.stringify(months.slice(4,7)))
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.22.2/moment.min.js"></script>
答案 1 :(得分:0)
请暂时找到以下格式。
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"]
谢谢
答案 2 :(得分:0)
仅显示没有moment.js的解决方案。
可以使用 toLocaleString 以浏览器默认语言提供月份名称。要获取从第3个月到第5个月(包括3个月)的名称,请从数组中将其切成薄片,例如
span
创建月份名称列表有些昂贵,但是只运行一次,并且只需要12个日期就可以了。
它需要更好的错误处理,例如检查a{
background:black;
color:#fff;
width:100px;
height:100px;
display:inline-block;
text-align:center;
position:relative;
border-radius:100%;
}
a span{
position:absolute;
top:50%;
left:50%;
transform:translate(-50%, -50%);
}
,<a href="#"><span>Link</span></a>
,/* Return array of month names for month number range in the
* browser default language.
* E.g. 3,5 returns ['March','April','May] with default language English
* Assumes Gregorian calendar, 12 months in year. If input is invalid,
* returns an empty array
*
* @param {number|string} [startMonth=1] - calendar month number
* @param {number|string} [endMonth=12] - calendar month number
* @returns {string[]} Array of month names from startMonth to endMonth inclusive.
*/
var getMonthNames = (function () {
var months = new Array(12).fill(0).map((v,i)=>
new Date(2000,i).toLocaleString(undefined,{month:'long'})
);
return function(startMonth=1, endMonth=12) {
return isNaN(+startMonth) || isNaN(+endMonth)? [] :
months.slice(--startMonth, endMonth);
}
}());
// Example
[['03', '03'], // Single month
['06'], // Month to end of year
[], // Month 1 to 12
['01', '09'], // Month 1 to month 9
['foo'] // Erroneous input
].forEach(args =>
console.log(`${args.toString()}: ${getMonthNames(...args).join(', ')}`)
);
,start <= end
和0 < start < 13
是整数,等等。