使用moment.js获取月份和年份中的所有日期

get all days and dates from month and year using moment.js

本文关键字:日期 js moment 获取 取月份 使用      更新时间:2023-09-26

以下代码来自moment.js文档

moment().date(Number);
moment().date(); // Number
moment().dates(Number);
moment().dates(); // Number

但输入的parameter数据类型是数字,而不是短月名和年份,这是我的需求输入。

下面是我的输入格式,类似于数组对象

`$scope.allMonths = ["Jan", "Feb", "Mar", "Apr", "May", "Jun",
"Jul", "Aug", "Sep", "Act", "Nov", "Dec"];
$scope.Year=2017;// `

所以我有月份和年份,现在我想通过使用moment.js来获取所有的日期和日期


更新:

我在下面的答案中使用了普通的javascript,得到了确切的结果。但是仍然无法使用moment.js 找到解决方案

  • 根据月份和年份分析日期
  • 在月份中循环,将每天格式化为一个数组

function getMonths(month,year){
    var ar = [];
    var start = moment(year+"-"+month,"YYYY-MMM");
    for(var end = moment(start).add(1,'month');  start.isBefore(end); start.add(1,'day')){
        ar.push(start.format('D-ddd'));
    }
    return ar;
}
console.log(getMonths('Mar',2011))

最后我通过javascript 得到了它

//selected year
$scope.selectedYear = function (value) {
            $scope.selectedYearValue = value;// 2011
        }
   //get days and date from  a month and year
        $scope.getDaysArray = function (month) {// month count is 2              
            var names = ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'];
            var date = new Date($scope.selectedYearValue, month - 1, 1);
            $scope.DayAndDate = [];
            while (date.getMonth() == month - 1) {
                result.push({ "Date": date.getDate(), "Day": names[date.getDay()] });
                $scope.DayAndDate.setDate(date.getDate() + 1);
            }
        }

现在的结果是

js> getDaysArray(2012)
["1-wed", "2-thu", "3-fri", "4-sat", "5-sun", "6-mon", "7-tue",
 "8-wed", "9-thu", "10-fri", "11-sat", "12-sun", "13-mon", "14-tue",
"15-wed", "16-thu", "17-fri", "18-sat", "19-sun", "20-mon", "21-tue", 
"22-wed", "23-thu", "24-fri", "25-sat", "26-sun", "27-mon", "28-tue",
"29-wed"]

但我不希望使用JavaScript而不是moment.js.