[javascript] 주어진 달의 순간 JS 시작 및 끝

연도 = 2014 및 월 = 9 (2014 년 9 월)로 JS 날짜를 계산해야합니다.

나는 이것을 시도했다 :

var moment = require('moment');
var startDate = moment( year+'-'+month+'-'+01 + ' 00:00:00' );
            var endDate = startDate.endOf('month');
            console.log(startDate.toDate());
            console.log(endDate.toDate());

두 로그 모두 다음을 보여줍니다.

Tue Sep 30 2014 23:59:59 GMT+0200 (CEST)
Tue Sep 30 2014 23:59:59 GMT+0200 (CEST)

종료 날짜는 정확하지만 시작 날짜가 아닌 이유는 무엇입니까?



답변

endOf원래 값을 변경 하기 때문 입니다.

관련 인용문 :

시간 단위의 끝으로 설정하여 원래 순간을 변경합니다.

다음은 원하는 출력을 제공하는 예제 함수입니다.

function getMonthDateRange(year, month) {
    var moment = require('moment');

    // month in moment is 0 based, so 9 is actually october, subtract 1 to compensate
    // array is 'year', 'month', 'day', etc
    var startDate = moment([year, month - 1]);

    // Clone the value before .endOf()
    var endDate = moment(startDate).endOf('month');

    // just for demonstration:
    console.log(startDate.toDate());
    console.log(endDate.toDate());

    // make sure to call toDate() for plain JavaScript date type
    return { start: startDate, end: endDate };
}

참조 :


답변

해당 월의 종료일 또는 시작일에 직접 사용할 수 있습니다.

new moment().startOf('month').format("YYYY-DD-MM");
new moment().endOf("month").format("YYYY-DD-MM");

새 형식을 정의하여 형식을 변경할 수 있습니다.


답변

사용 .endOf()하면 호출되는 오브젝트를 변경하므로 startDate9 월 30 일이됩니다.

.clone()변경하는 대신 사본을 만드는 데 사용해야 합니다.

var startDate = moment(year + '-' + month + '-' + 01 + ' 00:00:00');
            var endDate = startDate.clone().endOf('month');
            console.log(startDate.toDate());
            console.log(endDate.toDate());

Mon Sep 01 2014 00:00:00 GMT+0700 (ICT)
Tue Sep 30 2014 23:59:59 GMT+0700 (ICT)


답변

다음 코드를 시도하십시오.

const moment=require('moment');
console.log("startDate=>",moment().startOf('month').format("YYYY-DD-MM"));
console.log("endDate=>",moment().endOf('month').format("YYYY-DD-MM"));


답변

마지막 날을 얻는 직접적인 방법이 있다고 생각하지 않지만 다음과 같이 할 수 있습니다.

var dateInst = new moment();
/**
 * adding 1 month from the present month and then subtracting 1 day,
 * So you would get the last day of this month
 */
dateInst.add(1, 'months').date(1).subtract(1, 'days');
/* printing the last day of this month's date */
console.log(dateInst.format('YYYY MM DD'));


답변

startDate는 월 1 일입니다.이 경우 다음을 사용할 수 있습니다.

var endDate = moment(startDate).add(1, 'months').subtract(1, 'days');

도움이 되었기를 바랍니다!!


답변

var d = new moment();
var startMonth = d.clone().startOf('month');
var endMonth = d.clone().endOf('month');
console.log(startMonth, endMonth);

문서