javascript - 한국 - Moment.js를 사용하여 한 달에 일 목록을 얻는 방법




typescript moment (4)

Moment.js를 사용하여 배열의 특정 연도에있는 모든 요일을 가져오고 싶습니다. 예 :

January-2014:
[
"01-wed",
"02-thr",
"03-fri",
"04-sat"
]

어떤 제안? Moment.js 문서를 검토했지만 아무 것도 찾을 수 없었습니다. 내가 가지고있는 옷장은 이것이었다 :

moment("2012-02", "YYYY-MM").daysInMonth() 

하지만 이것은 특정 날짜에 대해 일일 총계가있는 int를 리턴합니다.

https://code.i-harness.com


moment.js 버전 2.1.0에서 다음과 같이 날짜를 설정할 때 :

    moment([2012, 0, 31]).month(1).format("YYYY-MM-DD"); // 2012-02-29

그런 다음 날짜를 구문 분석하고 한 달 동안의 일 수를 구해야합니다.


나를 위해 일하는 momentjs의 대안

function getDaysArrayByMonth() {
  var daysInMonth = moment().daysInMonth();
  var arrDays = [];

  while(daysInMonth) {
    var current = moment().date(daysInMonth);
    arrDays.push(current);
    daysInMonth--;
  }

  return arrDays;
}

그리고 당신은 확인할 수 있습니다.

var schedule = getDaysArrayByMonth();
schedule.forEach(function(item) {
  console.log(item.format("DD/MM"));
});

트릭을 수행 할 함수는 다음과 같습니다 (모멘트를 사용하지 않고 바닐라 자바 ​​스크립트 만 사용).

var getDaysArray = function(year, month) {
  var names = [ 'sun', 'mon', 'tue', 'wed', 'thu', 'fri', 'sat' ];
  var date = new Date(year, month - 1, 1);
  var result = [];
  while (date.getMonth() == month - 1) {
    result.push(date.getDate() + "-" + names[date.getDay()]);
    date.setDate(date.getDate() + 1);
  }
  return result;
}

예 :

js> getDaysArray(2012,2)
["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"]

ES2015 + 버전 :

const getDaysArray = (year, month) => {
  const names = Object.freeze(
     [ 'sun', 'mon', 'tue', 'wed', 'thu', 'fri', 'sat' ]);
  const date = new Date(year, month - 1, 1);
  const result = [];
  while (date.getMonth() == month - 1) {
    result.push(`${date.getDate()}-${names[date.getDay()]}`);
    date.setDate(date.getDate() + 1);
  }
  return result;
}

lodash 도 사용 하기 _.times :

var daysInMonth = [];

var monthDate = moment().startOf('month'); // change to a date in the month of interest

_.times(monthDate.daysInMonth(), function (n) {
     daysInMonth.push(monthDate.format('D'));  // your format
     monthDate.add(1, 'day');
});




momentjs