오늘 3 개월 전에 JavaScript로 날짜를 어떻게 계산합니까?
현재 날짜보다 3 개월 전인 날짜를 만들려고합니다. 아래 코드로 현재 달을 얻습니다.
var currentDate = new Date();
var currentMonth = currentDate.getMonth()+1;
Date월이 1 월 (1) 일 때 날짜가 3 월 전에 10 월 (10) 일 것이라는 점을 고려 하여 날짜 ( 데이터 유형 의 객체)를 계산하고 형성하는 논리를 제공 할 수 있습니까 ?
var d = new Date();
d.setMonth(d.getMonth() - 3);
이것은 1 월에 작동합니다. 이 스 니펫을 실행하십시오.
var d = new Date("2012/01/14");
console.log(d.toLocaleDateString());
d.setMonth(d.getMonth() - 3);
console.log(d.toLocaleDateString());
Moment.js라는 라이브러리를 사용하는 것이 좋습니다.
잘 테스트되고 크로스 브라우저와 서버 측에서 작동합니다 (Angular 및 Node 프로젝트 모두에서 사용하고 있습니다). 로케일 날짜를 크게 지원합니다.
var threeMonthsAgo = moment().subtract(3, 'months');
console.log(threeMonthsAgo.format()); // 2015-10-13T09:37:35+02:00
.format()ISO 8601 형식으로 포맷 된 날짜의 문자열 표현을 반환 합니다. 다음과 같이 사용자 정의 날짜 형식으로 사용할 수도 있습니다..format('dddd, MMMM Do YYYY, h:mm:ss a')
정말 간단하게하기 위해 JavaScript 용 날짜 라이브러리 인 DateJS를 사용할 수 있습니다.
당신을위한 예제 코드 :
Date.today().add({ months: -1 });
이것은 더하기 / 빼기를 처리해야합니다. 빼기 위해 음수 값을 넣고 더하기 양수 값을 입력하십시오. 이것은 또한 월간 크로스 오버 문제를 해결합니다.
function monthAdd(date, month) {
var temp = date;
temp = new Date(date.getFullYear(), date.getMonth(), 1);
temp.setMonth(temp.getMonth() + (month + 1));
temp.setDate(temp.getDate() - 1);
if (date.getDate() < temp.getDate()) {
temp.setDate(date.getDate());
}
return temp;
}
변수에 직접 넣을 수있는 "하나의 라이너"(쉽게 읽을 수 있도록 여러 줄에 있음) :
var oneMonthAgo = new Date(
new Date().getFullYear(),
new Date().getMonth() - 1,
new Date().getDate()
);
setMonthgilly3가 제공 하는 방법이 원하는 것이 아닌 경우 다음을 고려하십시오.
var someDate = new Date(); // add arguments as needed
someDate.setTime(someDate.getTime() - 3*28*24*60*60);
// assumes the definition of "one month" to be "four weeks".
올바른 배수를 설정하기 만하면 얼마든지 사용할 수 있습니다.
나는 gilly3의 대답 의 단순함을 좋아 하지만 사용자는 3 월 31 일 이전의 한 달이 3 월 3 일이라는 사실에 놀랄 것입니다. 나는 그달 말 에 충실한 버전을 구현하기로 결정했습니다. 31 년은 윤년이 아닌 2 월 28 일입니다.
function addMonths(date, months) {
var result = new Date(date),
expectedMonth = ((date.getMonth() + months) % 12 + 12) % 12;
result.setMonth(result.getMonth() + months);
if (result.getMonth() !== expectedMonth) {
result.setDate(0);
}
return result;
}
var dt2004_05_31 = new Date("2004-05-31 0:00"),
dt2001_05_31 = new Date("2001-05-31 0:00"),
dt2001_03_31 = new Date("2001-03-31 0:00"),
dt2001_02_28 = new Date("2001-02-28 0:00"),
result = addMonths(dt2001_05_31, -2);
console.assert(dt2001_03_31.getTime() == result.getTime(), result.toDateString());
result = addMonths(dt2001_05_31, -3);
console.assert(dt2001_02_28.getTime() == result.getTime(), result.toDateString());
result = addMonths(dt2001_05_31, 36);
console.assert(dt2004_05_31.getTime() == result.getTime(), result.toDateString());
result = addMonths(dt2004_05_31, -38);
console.assert(dt2001_03_31.getTime() == result.getTime(), result.toDateString());
console.log('Done.');
There is an elegant answer already but I find that its hard to read so I made my own function. For my purposes I didn't need a negative result but it wouldn't be hard to modify.
var subtractMonths = function (date1,date2) {
if (date1-date2 <=0) {
return 0;
}
var monthCount = 0;
while (date1 > date2){
monthCount++;
date1.setMonth(date1.getMonth() -1);
}
return monthCount;
}
var d = new Date("2013/01/01");
console.log(d.toLocaleDateString());
d.setMonth(d.getMonth() + 18);
console.log(d.toLocaleDateString());
var minDate = new Date();
minDate.setMonth(minDate.getMonth() - 3);
Declare variable which has current date. then just by using setMonth inbuilt function we can get 3 month back date.
In my case I needed to substract 1 month to current date. The important part was the month number, so it doesn't care in which day of the current month you are at, I needed last month. This is my code:
var dateObj = new Date('2017-03-30 00:00:00'); //Create new date object
console.log(dateObj); // Thu Mar 30 2017 00:00:00 GMT-0300 (ART)
dateObj.setDate(1); //Set first day of the month from current date
dateObj.setDate(-1); // Substract 1 day to the first day of the month
//Now, you are in the last month
console.log(dateObj); // Mon Feb 27 2017 00:00:00 GMT-0300 (ART)
Substract 1 month to actual date it's not accurate, that's why in first place I set first day of the month (first day of any month always is first day) and in second place I substract 1 day, which always send you to last month. Hope to help you dude.
var dateObj = new Date('2017-03-30 00:00:00'); //Create new date object
console.log(dateObj); // Thu Mar 30 2017 00:00:00 GMT-0300 (ART)
dateObj.setDate(1); //Set first day of the month from current date
dateObj.setDate(-1); // Substract 1 day to the first day of the month
//Now, you are in the last month
console.log(dateObj); // Mon Feb 27 2017 00:00:00 GMT-0300 (ART)
var date=document.getElementById("date");
var d = new Date();
document.write(d + "<br/>");
d.setMonth(d.getMonth() - 6);
document.write(d);
if(d<date)
document.write("lesser then 6 months");
else
document.write("greater then 6 months");
Following code give me Just Previous Month From Current Month even the date is 31/30 of current date and last month is 30/29/28 days:
<!DOCTYPE html>
<html>
<body>
<p>Click the button to display the date after changing the month.</p>
<button onclick="myFunction()">Try it</button>
<p id="demo"></p>
<script>
function myFunction() {
var d = new Date("March 29, 2017"); // Please Try the result also for "March 31, 2017" Or "March 30, 2017"
var OneMonthBefore =new Date(d);
OneMonthBefore.setMonth(d.getMonth(),0);
if(OneMonthBefore.getDate() < d.getDate() )
{
d.setMonth(d.getMonth(),0);
}else
{
d.setMonth(d.getMonth()-1);
}
document.getElementById("demo").innerHTML = d;
}
</script>
</body>
</html>
var d = new Date();
document.write(d + "<br/>");
d.setMonth(d.getMonth() - 6);
document.write(d);
'Programming' 카테고리의 다른 글
| Base64 문자열을 이미지 파일로 변환 하시겠습니까? (0) | 2020.06.29 |
|---|---|
| 다른 테이블로 데이터 복사 (0) | 2020.06.29 |
| WPF DataGrid에서 한 번 클릭 확인란을 선택하는 방법은 무엇입니까? (0) | 2020.06.29 |
| 클래스 상수에 액세스 (0) | 2020.06.29 |
| 숫자 (0-9) 만 허용하고 문자는 허용하지 않는 정규식 (0) | 2020.06.29 |