Date 팁: set 관련 조작 및 응용현재 월 (분기 / 년) 의 마지막 날 가 져 오기
set 작업 은 아직도 적지 않다.http://www.w3school.com.cn/jsref/jsref_obj_date.asp,
오늘 은 그냥... setFullYear, setMonth, setDate, 오늘 의 응용 은 이 세 가지 만 관련 되 기 때 문 입 니 다.
이 세 가지 방법 은 말 그대로 년, 월, 일 을 설정 합 니 다. 예전 에 제 가 알 게 된 응용 프로그램 입 니 다. 예 를 들 어 '카운트다운' 에서 목표 시간 대 를 설정 할 때 사 용 됩 니 다. 다른 것 은 잠시 기억 하지 못 하고 나중에 다시 보충 합 니 다.
오늘 은 '현재 월 (분기 / 년) 의 마지막 날 을 얻 기' 의 용법 을 말 합 니 다.
매달 일 수 는 정 해 져 서 는 안 된다 는 것 을 생각 하 셨 을 것 입 니 다. 28, 29 (윤년 2 월), 30, 31 이 있 습 니 다. 지금 이 몇 월 인지 계산 한 다음 에 arr 나 map (json) 에 가서 대응 하 는 날 짜 를 찾 아 보 세 요. 물론 이것 도 방법 입 니 다. 효과 가 있 을 수 있 습 니 다. (윤년 도 고려 해 야 합 니 다)
그럼 이렇게 번 거 롭 지 않 으 면 어 떡 하지?
사실 Date 는 원래 윤년 과 같은 특수 한 상황 을 포함 하여 매달 일 수 를 자동 으로 처리 하기 때문에 우 리 는 전혀 관심 을 가 질 필요 가 없다.
여기 서 하나의 용법 을 사용 하 는데 여러분 도 사용 해 보 셨 을 것 입 니 다. date. setDate (0).그래, 잘못 본 게 아니 라 0 이 야.(여보세요, 이 건 month 가 아 닙 니 다. 1 을 추가 하지 않 아 도 됩 니 다. setDate (1) 를 사용 하 는 것 이 확실 합 니까?)
0 은 존재 하지 않 는 날 입 니 다. date. setDate (0) 이후 이 날 은 존재 하지 않 거나 1 일 전날 로 설정 되 어 있 습 니 다.그렇다면 1 일 전날 은 자 연 스 럽 게 전 월 의 마지막 날 이다.
1 var date = new Date();
2 console.log(' ', date.getMonth() + 1, date.getDate());
3 date.setDate(0);
4 console.log(' ', date.getMonth() + 1, date.getDate());
콘 솔 이 위의 코드 를 뛰 면 지난달 마지막 날 을 얻 을 수 있 을 것 이다.
계속 하 세 요. 우리 가 얻 을 수 있 는 것 은 이번 달 마지막 날 입 니 다. 어떻게 깨 뜨 릴 까요?
먼저 월 을 다음 달 로 설정 한 다음 에 이 달의 마지막 날 을 가 져 옵 니 다.
1 date.setMonth(date.getMonth() + 1);
2 date.setDate(0);
날짜 가 이 달 마지막 날 에 대응 하 는 날짜 대상 입 니 다.
이로써 그 달의 마지막 날 을 간단하게 얻 을 수 있 습 니 다. setMonth 를 바 꾸 면 그 달의 마지막 날 을 얻 을 수 있 습 니 다.
~~~~~~~~~~~~~~~~~~~~~~~~~ 분할 선 ~~~~~~~~~~~~~~~~~~~~~~
다음은 이 해 의 마지막 날 짜 를 얻 는 날짜 입 니 다.
마찬가지 로 우 리 는 내년 까지 만 설치 하면 된다. 그리고 월 을 0 월 (즉 1 월) 까지 설치 한 다음 에 0 일 까지 설치 하면 2017 - 01 - 00, 즉 설날 전날 이 된다. 물론 2016 - 12 - 31 일이 다.
1 date.setFullYear(date.getFullYear() + 1); //
2 date.setMonth(0); // 0 , 1 , , 0
3 date.setDate(0); // 0
~~~~~~~~~~~~~~~~~~~~~~~~~ 또 선 을 나 누 자. ~~~~~~~~~~~~~~~~~~~~~
그리고 현재 분기 의 마지막 날 이 왔 다.
Date 에는 분기 개념 이 없습니다.
1 var m = date.getMonth();
2 var quarter = Math.floor(m / 3) + 1; // 1 , 4
3 var qLastMonth = quarter * 3;
그 중에서 quarter 는 몇 분기 이 고 qLast Month 는 이번 분기 의 마지막 달 은 몇 월 입 니까?
이번 분기 의 마지막 달 이 몇 월 인지 받 았 으 니 위 에서 1 월 의 마지막 날 을 얻 는 방법 으로 처리 하면 좋 겠 다.
1 date.setMonth(qLastMonth);
2 date.setDate(0);
이때 데이트 가 현재 분기 의 마지막 날 데이트 대상 이다.물론 확장 을 하면 임의의 분기 의 마지막 날 을 받 을 수 있 습 니 다. 첫 번 째 단계 에 만 설정 하면 됩 니 다.
임의의 분기 의 마지막 날, 예 를 들 어 2 분기, 그냥...
1 date.setMonth(6); // 4 || 5 || 6
2 date.setDate(0);
마지막 으로 프로젝트 에서 만난 실제 응용 에서
자줏빛
1. 이번 분기 의 마지막 날 획득 하기;오늘 이 현재 분기 의 마지막 날 이 15 일 보다 클 때 (예 를 들 어 6 월 20 일) 다음 분기 의 마지막 날 로 돌아간다.
2. 올해 의 마지막 날 획득 하기;오늘 이 12 월 15 일 보다 크 면 내년 의 마지막 날 로 돌아간다.
시 작 된 구현 코드 는 다음 과 같 습 니 다.
1 /**
2 * / / date
3 * @param {String} type : month/m, year/y, quarter/q
4 * @return {object} date ,
5 */
6
7 var SERVER_TIME = Date.now() / 1000; // ,
8
9 function getMaxDate(type) {
10 var date = new Date(SERVER_TIME * 1000);
11 var m = date.getMonth();
12 var y = date.getFullYear();
13 var d = date.getDay();
14 var today = date.getDate();
15 console.log(['SERVERTIME: ',y,'-',m+1,'-',today,' ',d].join(''));
16 switch (type) {
17 case 'm':
18 case 'month':
19 date.setMonth(m + 1);
20 date.setDate(0);
21 break;
22 case 'y':
23 case 'year':
24 if (m == 11 && today >= 15) {
25 date.setFullYear(y + 2);
26 } else {
27 date.setFullYear(y + 1);
28 }
29 date.setMonth(0);
30 date.setDate(0);
31 break;
32 case 'q':
33 case 'quarter':
34 var qLastMonth = (Math.floor(m / 3) + 1) * 3;
35 date.setMonth(qLastMonth);
36 date.setDate(0);
37
38 if (m === date.getMonth() && today >= 15) {
39 date.setMonth(qLastMonth + 3);
40 date.setDate(0);
41 }
42 break;
43 default:
44 date = null;
45 }
46
47 return date;
48 }
그리고 이 코드 에 큰 구멍 이 있어 서 평소에 만 날 수 있 는 것 이 아니 라 연말 이 되 지 않 았 습 니까? 바로 나 왔 습 니 다.
분기 선택 시 36 줄 또는 뒤쪽 38 줄 의 코드 블록 에 문제 가 발생 합 니 다.
예 를 들 어 2 분기 에는 문제 가 없다.36 줄 에 날짜 의 날 부터 30 일, 즉 6 월 30 일 까지 설정 합 니 다.38 줄 코드 논 리 를 만족 시 키 면 39 - 40 줄 설정 월 부터 9 월 30 일 까지 괜 찮 습 니 다. 완벽 합 니 다 ~
그러나 지금 이 1 분기 라면 36 줄 의 설치 날 짜 는 3 월 31 일 까지 이다.38 줄 코드 논 리 를 충족 시 키 면 39 - 40 줄 은 6 월 31 일 까지, 아시 바, 6 월 31 일이 없 으 면 이때 얻 은 날짜 가 ~ ~ ~ 맞 아, 7 월 1 일 에 스스로 구 덩이 를 파 는 거 야.
그래서 코드 를 바 꿨 어 요.
1 function getMaxDate(type) {
2 var date = new Date(SERVER_TIME * 1000);
3 var m = date.getMonth();
4 var y = date.getFullYear();
5 var d = date.getDay();
6 var today = date.getDate();
7 console.log(['SERVERTIME: ', y, '-', m + 1, '-', today, ' ', d].join(''));
8 switch (type) {
9 case 'm':
10 case 'month':
11 date.setMonth(m + 1);
12 date.setDate(0);
13 break;
14 case 'y':
15 case 'year':
16 if (m == 11 && today >= 15) {
17 date.setFullYear(y + 2);
18 } else {
19 date.setFullYear(y + 1);
20 }
21 date.setMonth(0);
22 date.setDate(0);
23 break;
24 case 'q':
25 case 'quarter':
26 var qLastMonth = (Math.floor(m / 3) + 1) * 3;
27 if (m === date.getMonth() && today >= 15) {
28 date.setMonth(qLastMonth + 3);
29 } else {
30 date.setMonth(qLastMonth);
31 }
32 date.setDate(0); // date
33 break;
34 default:
35 date = null;
36 }
37
38 return date;
39 }
여기 서 주의 항목 을 얻 었 습 니 다. 달의 관련 판단 은 반드시 일의 설정 전에 잘 해 야 합 니 다. 날짜 설정 후 달 을 조작 하지 마 십시오.또는 날 짜 를 1 - 28 사이 의 임의의 숫자 로 설정 하면 다음 달 까지 가지 않 을 것 을 보증 합 니 다.
bla ~ bla ~ 말 을 잔뜩 했 어 요. 쓸데없는 말 을 많이 했 어 요. 어차피 센 스 있 게 썼 으 니까 한 번 만 기록 해 주세요 ~ ~
see U
다음으로 전송:https://www.cnblogs.com/ufex/p/get_last_day.html
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.