var odatef = new Date()
odatef .setFullYear(2012);
odatef.setMonth(5)
odatef.setDate(1);
fday = ordatef.getDay()
5월은 30일인데 위 코드를 통해 다음 달, 즉 6월 1일이 무슨 요일인지를 얻어야 할까요? 그리고 이를 변수 fday에 할당합니다.
물론, 올바르게 가져올 수 있습니다.
프로세스는 다음과 같습니다.
1. 그러면 odatef.setFullYear(2012)가 실행됩니다. , 2012 Day;
2. odatef.setMonth(5); 그러면 odatef 객체는 다음과 같습니다.
3. 그러면 odatef. 객체는 다음과 같습니다: 2012년 6월 1일;
4. 다음 문장을 실행합니다. ordatef.getDay(); 그러면 우리가 얻는 것은 2012년 6월 1일, 정확히 우리가 원하는 요일입니다!
오늘이 5월 31일이라면 위와 같은 코드를 사용하면 다음달 요일을 정확하게 구할 수 없습니다.
이유:
1. odatef.setFullYear(2012)를 실행합니다. 그러면 odatef 개체는 2012년 5월 31일입니다.
2. 그러면 odatef 개체가 실행됩니다. be: June 31, 2012; 문제는 두 번째 단계에 있습니다. June에는 31일이 없으므로 odatef 개체는 다음과 같습니다. 7월에 31일이 없으면 odatef 개체는 다음과 같습니다. 31일이 있을 때까지 계속해서 8월로 이동합니다.
3. 이 문장을 실행합니다. odatef.setDate(1) 그러면 odatef 개체는 다음과 같습니다.
4. .getDay(); 그러면 우리가 얻는 것은 2012년 7월 1일, 요일입니다. 이는 우리가 원하는 것이 아닙니다! ~
해결 방법: 명세서 위치를 변경하고 날짜를 먼저 설정한 다음 월을 설정하세요!
var odatef = new Date()
odatef .setFullYear(2012);
odatef.setDate(1);
odatef.setMonth(6)
fday = ordatef.getDay()
1. 이 문장을 실행하면 odatef.setFullYear(2012); 2. 이 문장을 실행하면 odatef.setDate(1)가 됩니다.
3 . 이 문장을 실행합니다. odatef.setMonth(5); 그러면 odatef 객체는 다음과 같습니다.
4. 이 문장을 실행하면 다음과 같습니다. 2012년 6월 1일; 이번주에요! ~~~
요약: 각 문장의 실행 결과가 무엇인지, 무엇이 반환되는지를 이해하는 것이 필요합니다. 나는 항상 연도와 월을 설정하는 것이라고 생각했습니다. 결과나 설정 후 반환되는 내용은 고려되지 않습니다!