2017-06-06 162 views
2

我想创建这样的数组。通过moment.js创建日历数组

var date_ = [ 
{ "DateText": "Mon - 2nd April", "Date": "2/4/2017", "WeekNumber" : 13 }, 
{ "DateText": "Tue - 3rd April", "Date": "3/4/2017", "WeekNumber": 14 }, 
{ "DateText": "Wed - 4th April", "Date": "4/4/2017", "WeekNumber": 14 } 
]; 

我得到了一切只是这第二,第三和第四号码约定是否存在,你可以检查我的代码段。

var date_ = []; 
 

 
var prevDate = moment().subtract(15, 'days'); 
 
var nextDate = moment().add(15, 'days'); 
 

 
var start = new Date(prevDate); 
 
var end = new Date(nextDate); 
 

 
while(start < end){ 
 
    date_.push(
 
     { 
 
     "DateText" : moment(start).format('ddd - DD MMM'), 
 
     "Date" : moment(start).format('DD/MM/YYYY'), 
 
     "WeekNumber" : moment(start).week() 
 
     } 
 
    ); 
 
    var newDate = start.setDate(start.getDate() + 1); 
 
    start = new Date(newDate); 
 
} 
 

 
console.log(date_);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.0/jquery.min.js"></script> 
 
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.13.0/moment.min.js"></script>

感谢

回答

3

你需要Do令牌看到Display Format

moment(start).format('ddd - Do MMM') 

var date_ = []; 
 

 
var prevDate = moment().subtract(15, 'days'); 
 
var nextDate = moment().add(15, 'days'); 
 

 
while (prevDate.isBefore(nextDate)) { 
 
    date_.push({ 
 
    "DateText": prevDate.format('ddd - Do MMM'), 
 
    "Date": prevDate.format('DD/MM/YYYY'), 
 
    "WeekNumber": prevDate.week() 
 
    }); 
 
    prevDate.add(1, 'days'); 
 
} 
 

 
console.log(date_);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.0/jquery.min.js"></script> 
 
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.13.0/moment.min.js"></script>

+0

完美!谢谢:) – user2972061

+0

+1为好的答案,但我建议使用['isBefore'](http://momentjs.com/docs/#/query/is-before/)而不是使用'<' – VincenzoC

+1

@VincenzoC,我只专注于OP问题领域_我得到了一切只是这第二,第三和第四号码约定是剩余的_你可以修改答案 – Satpal