2012-01-12 2 views
48

시작 캘린더 입력 상자와 종료 캘린더 입력 상자가 있습니다. 기본값은 현재 날짜보다 30 일 이전에 달력 입력 상자를 시작하고 끝 날짜 입력 상자는 현재 날짜로 시작합니다. 여기에 내 데이트 바스가있다.현재 날짜보다 30 일 전에 얻는 방법?

var today = new Date(), 
    dd = today.getDate(), 
    mm = today.getMonth(), 
    yyyy = today.getFullYear(), 
    month = ["January", "February", "March", 
     "April", "May", "June", "July", "August", 
     "September", "October" "November", "December"], 
    startdate = month[mm] + ", " + yyyy.toString(); 

종료일은 var enddate = startdate - 30; 같은 것을 분명히이 작동하지 않을 것입니다.

그래서 현재 날짜 12 월 30 일, 2011의 경우 나는 시작 날짜가 12 월 1 일 2011 년

편집을 읽고 싶은 것 : 내 질문은 일종의 ... 대답했다. Date.today(); 및 Date.today(). add (-30); 2012 년 1 월 13 일의 형식으로 날짜가 필요합니다. Not Fri Jan 13 2012 10:48:56 GMT -055 (EST). 어떤 도움이 필요합니까?

+0

http://stackoverflow.com/questions/563406/add-days-to-datetime -using-java-script 도움이 될 것 같아요. –

답변

87

우수한 Datejs JavaScript date library (대신 this actively maintained fork에 관심이있을 수 있도록 원본을 더 이상 유지)를 사용하여보십시오 :

Date.today().add(-30).days(); // or... 
Date.today().add({days:-30}); 

[편집]

참조 또한 우수한 Moment.js JavaScript date library :

moment().subtract(30, 'days'); // or... 
moment().add(-30, 'days'); 
+2

나는 당신을 위해 10 표를 얻길 바란다 ... – Ryley

+0

Why downvote? – maerics

+0

Date.js로 안내해 주셔서 감사합니다. –

1

나는 date.js을 사용합니다. 이를 쉽게 처리하고 모든 윤년을 보냅니다.

33
startDate = new Date(today.getTime() - 30*24*60*60*1000); 

.getTime() 메서드는 일반 수학 연산을 사용할 수있는 표준 JS 타임 스탬프 (Jan 1/1970부터의 밀리 초)를 반환하며이 연산은 Date 개체에 직접 피드백 될 수 있습니다.

+3

+1하지만 윤년 초 등의 성가심을 간과 할 것입니다. – maerics

+0

+1 - Datejs는 읽기 쉽습니다. 이것은 구현하기가 더 쉽다. – Blazemonger

96

은 @Neel에서 언급 한 바와 같이이

var today = new Date() 
var priorDate = new Date().setDate(today.getDate()-30) 

, 자바 스크립트 타임 스탬프 형식이 메소드가 복귀하십시오. 다시 날짜 개체로 변환하려면 위의 코드를 새 Date 개체로 전달해야합니다. new Date(priorDate).

내가 선호
+11

외부 라이브러리를 사용하지 않고이 솔루션이 가장 좋습니다. 감사. – Gowiem

+9

이 메서드는 Javascript Timestamp 형식으로 반환됩니다.다시 날짜 객체로 변환하려면 위의 코드를'new date (priorDate)'에 넘겨야합니다. – Neel

1

순간 JS

startDate = moment().subtract(30, 'days').format('LL') // January 29, 2015 

endDate = moment().format('LL'); // February 28, 2015 
34

여기 당신을위한 못생긴 솔루션입니다 :

var date = new Date(new Date().setDate(new Date().getDate() - 30)); 
+9

이것은 가장 좋은 해결책입니다. –

+13

자바 스크립트에서 아무도 당신이 비명을 수 있습니다들을 수 있습니다 ... –

+1

동의 - 이것은 최고의 솔루션입니다. 이것은 Rory McCrossan의 대답의 해결책입니다. 그러나 간결하고 완벽합니다 (외부 라이브러리는 필요하지 않습니다). –

관련 문제