假设我有一个特定的日期,例如:21-03-2013
我想得到我使用的月份:moment("04-03-2013","DD-MM-YYYY").format('MMMM');
这给了我三月。
现在是我今天使用的日期,moment().format('MM');
它给了我 10 月。
我如何获得名称之间的所有月份?
假设我有一个特定的日期,例如:21-03-2013
我想得到我使用的月份:moment("04-03-2013","DD-MM-YYYY").format('MMMM');
这给了我三月。
现在是我今天使用的日期,moment().format('MM');
它给了我 10 月。
我如何获得名称之间的所有月份?
这也适用于更长的时间(> 1 年) - 如有必要
function getDates(startDate /*moment.js date object*/) {
nowNormalized = moment().startOf("month"), /* the first of current month */
startDateNormalized = startDate.clone().startOf("month").add("M", 1), /* the first of startDate + 1 Month - as it was asked for the months in between startDate and now */
months = [];
/* .isBefore() as it was asked for the months in between startDate and now */
while (startDateNormalized.isBefore(nowNormalized)) {
months.push(startDateNormalized.format("MMMM"));
startDateNormalized.add("M", 1);
}
return months;
}
更新
正如马特在评论中所建议的那样,我现在正在使用.clone()
而.startOf("month")
不是自己创建规范化克隆
此函数采用格式为“DD-MM-YYYY”的字符串并返回一个数组,其中包含从该日期到当前的所有月份
function getMonths(startDate){
var startMonth = parseInt(startDate.split('-')[1], 10),
endMonth = parseInt(moment().format('M'), 10),
monthArray = [];
if( startMonth < 1 ) return [];
for( var i = startMonth; i != endMonth; i++ ){
if( i > 12 ) i = 1;
monthArray.push( moment(i, "M").format("MMMM") );
}
monthArray.push(moment().format('MMMM'));
return monthArray;
}
getMonths("04-03-2013");