Moment.js를 사용하여 날짜 형식 지정 및 날짜 빼기


121

DD-MM-YYYYMoment.js를 사용 하는 형식으로 어제 날짜를 유지하는 변수를 원합니다. 따라서 오늘이 2015-04-15이면 하루를 빼고 14-4-2015가됩니다.

다음과 같은 몇 가지 조합을 시도했습니다.

startdate = moment().format('DD-MM-YYYY');
startdate.subtract(1, 'd');

이:

startdate = moment().format('DD-MM-YYYY').subtract(1, 'd');

그리고 이것 :

startdate = moment();
startdate.subtract(1, 'd');
startdate.format('DD-MM-YYYY')

하지만 이해가 안 돼요 ...


포맷하기 전에 빼기를 시도 했습니까? 를 포맷하면 그냥 ... 당신에게 문자열을 제공합니다
ndugger

moment (). subtract (10, "days") 그냥 "d"대신에 어쩌면?
leopik 2015-04-15

"보류"어제의 A와 날짜 날짜 , 당신이 그것을 표시 할 필요가있을 때 형식화 한 문자열 변환합니다.
Pointy

@NickDugger 나는 그 질문에서 실수를 저질렀다. 마지막 시도는 startdate = moment (); 첫 번째 줄에. 필자는 지금 감사 편집
beaumondo

format()문자열로 만드는 함수입니다. 마지막으로해야합니다.
jwatts1980

답변:


210

여러 가지 이상한 일이 일어나고 있습니다. 첫 번째는 게시물에서 편집되었지만 메서드가 호출되는 순서와 관련이 있습니다.

.format문자열을 반환합니다. 문자열에는subtract 메소드 .

두 번째 문제는 하루를 빼고 있지만 실제로는 변수로 저장하지 않는다는 것입니다.

그러면 코드는 다음과 같아야합니다.

var startdate = moment();
startdate = startdate.subtract(1, "days");
startdate = startdate.format("DD-MM-YYYY");

그러나 이것을 함께 연결할 수 있습니다. 이것은 다음과 같습니다.

var startdate = moment().subtract(1, "days").format("DD-MM-YYYY");

차이점은 순간이 파괴적이기 때문에 startdate를 startdate에 수행하는 변경 사항으로 설정한다는 것입니다.


13
moment.js subtract는 사실 파괴적입니다. "시간을 빼서 원래 순간을 뮤트합니다." 여기 참조 : momentjs.com/docs/#/manipulating/subtract
docksteaderluke


5

이 시도:

var duration = moment.duration({'days' : 1});
moment().subtract(duration).format('DD-MM-YYYY');

이것은 당신에게 줄 것입니다 14-04-2015- 오늘은 15-04-2015입니다.

또는 momentjs 버전이 2.8.0 미만인 경우 다음을 사용할 수 있습니다.

startdate = moment().subtract('days', 1).format('DD-MM-YYYY');

대신 :

startdate = moment().subtract(1, 'days').format('DD-MM-YYYY');

3

startdate = moment().subtract(1, 'days').startOf('day')


2

마지막 시도에서 얻은 것 같습니다. Chrome 콘솔에서 문자열을 잡아 ..

startdate = moment();
startdate.subtract(1, 'd');
startdate.format('DD-MM-YYYY');
"14-04-2015"

startdate = moment();
startdate.subtract(1, 'd');
myString = startdate.format('DD-MM-YYYY');
"14-04-2015"
myString
"14-04-2015"

2

angularjs moment = "^ 1.3.0"에서

moment('15-01-1979', 'DD-MM-YYYY').subtract(1,'days').format(); //14-01-1979
or
moment('15-01-1979', 'DD-MM-YYYY').add(1,'days').format(); //16-01-1979
``



2
var date = new Date();

var targetDate = moment(date).subtract(1, 'day').toDate(); // date object

이제이 날짜를보고 싶은 방식을 포맷하거나이 날짜를 다른 날짜와 비교할 수 있습니다.

toDate () 함수가 포인트입니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.