如何在moment.js中获得Days b / w当前周

时间:2016-01-19 08:38:45

标签: angularjs date momentjs days

我是角度js和moment.js的新手,我有以下代码,它给出了一周的开始日期和结束日期,如1月17日 - 1月23日。但我希望在星期一,星期一,这种格式的所有7天。

我的代码

var currentDate,
weekStart,
weekEnd,
shortWeekFormat = 'MMMM Do';

function setCurrentDate(aMoment){
currentDate = aMoment,
weekStart = currentDate.clone().startOf('week'),
weekEnd = currentDate.clone().endOf('week')
}

setCurrentDate(moment());
$scope.currentWeek = function(){ return currentDate.format(shortWeekFormat);         };
$scope.currentWeekStart = function(){ return weekStart.format(shortWeekFormat); };
$scope.currentWeekEnd = function(){ return weekEnd.format(shortWeekFormat); };

HTML

<h2><i class="fa fa-arrow-left"></i>Week Of {{currentWeek()}}{{currentWeekStart()}}-{{currentWeekEnd()}}<i class="fa fa-arrow-right"></i></h2>
<button ng-click="prevWeek()">previous week</button>
<button ng-click="nextWeek()">next week</button>

2 个答案:

答案 0 :(得分:3)

您可以使用以下时刻代码实现所需的格式。

moment('01/19/2016').format("MMMM Do,dddd");

现在,要获得一周之间的所有日期,您需要使用包含所有七个日期的数组。通过简单的for循环添加天数开始日期,您可以实现您想要的。请看下面的示例代码。

   var currentDate = moment();
   var weekStart = currentDate.clone().startOf('week');
   var weekEnd = currentDate.clone().endOf('week');

   var days = [];
   for (i = 0; i <= 6; i++) {

       days.push(moment(weekStart).add(i, 'days').format("MMMM Do,dddd"));

   };
   console.log(days);
   console.log(moment('01/19/2016').format("MMMM Do,dddd"));

现在要将它与angular一起使用,您可以将days数组指定给某个范围变量,并使用ng-repeat显示日期。

JSFiddle

答案 1 :(得分:0)

改善J-D的答案。这将返回一个矩对象的数组:

const getCurrentWeekDays = () => {
  const weekStart = moment().startOf('week');

  const days = [];
  for (let i = 0; i <= 6; i++) {
    days.push(moment(weekStart).add(i, 'days'));
  }

  return days;
}