[js] javascript로 달력만들기

2024. 9. 18. 01:04·JAVACSCRIPT
더보기

java에서 달력만들기:[java]출생년도, 12간지 , 날짜 출력하기,DateTimeFormater

 

[java]출생년도, 12간지 , 날짜 출력하기,DateTimeFormater

System.out.println("태어난 연도를 입력하세요"); Scanner in=new Scanner(System.in); int birthyear =in.nextInt(); String ddi=""; switch(birthyear%12) { case 0 :ddi="원숭이"; break; case 1 :ddi="닭"; break; case 2 :ddi="개"; break; case 3 :ddi

o94777.tistory.com

html에서 간단하게 달력 출력하기

<input type="date" />

<input type="time" />

See the Pen Untitled by 유레이나 (@zdixexqp-the-reactor) on CodePen.


getLastDate(year, month):

주어진 연도와 월의 마지막 날짜를 반환한다. 윤년에 따라 2월의 날짜를 조정한다.

[month-1]:month가 1부터 시작하기때문에 배열의 0번째를 지정하기위해 1을 빼준다.

더보기

그레고리력의 정확한 윤년 규칙은 다음과 같다.

  1. 서력 기원 연수가 4로 나누어 떨어지는 해는 윤년으로 한다. (1988년, 1992년, 1996년, 2000년, 2004년, 2008년, 2012년, 2016년, 2020년, 2024년, 2028년, 2032년, 2036년, 2040년, 2044년 ...)
  2. 서력 기원 연수가 4, 100으로 나누어 떨어지는 해는 평년으로 한다. (1700년, 1800년, 1900년, 2100년, 2200년, 2300년...)
  3. 서력 기원 연수가 4, 100, 400으로 나누어 떨어지는 해는 윤년으로 둔다. (1600년, 2000년, 2400년...

출처:https://ko.wikipedia.org/wiki/%EC%9C%A4%EB%85%84

 

윤년 - 위키백과, 우리 모두의 백과사전

위키백과, 우리 모두의 백과사전. 윤년(閏年)은 역법을 실제 태양년에 맞추기 위해 여분의 하루 또는 월(月)을 끼우는 해이다. 태양년은 정수의 하루로 나누어떨어지지 않고, 달의 공전주기와 지

ko.wikipedia.org

getFirstDate(year, month):

주어진 연도와 월의 첫 번째 날짜의 요일을 반환한다.

new Date(year, monthIndex, day)는 JavaScript의 내장 객체인 Date를 생성하는 함수.
year: 연도.
monthIndex: 월을 나타내며, 0부터 시작. 즉, 0은 1월, 1은 2월, ..., 11은 12월을 의미.
day: (선택적) 날짜를 나타내는 숫자.
예를 들어, new Date(2024, 0, 1)은 2024년 1월 1일을 나타내는 Date 객체를 생성한다.

getDay()
getDay()는 Date 객체의 메서드로, 해당 날짜의 요일을 반환한다.
반환값은 0부터 6까지의 숫자로, 0은 일요일, 1은 월요일, 2는 화요일, ..., 6은 토요일을 의미.
예를 들어, new Date(2024, 0, 1).getDay()의 결과는 1월 1일이 월요일이므로 1이 된다.

 function createCalendar(year, month, date) {}

        const lastDate = getLastDate(year, month);
        const firstDate = getFirstDate(year, month);

getLastDate와 getFirstDate 함수를 호출하여 마지막 날짜와 첫 요일을 가져온다.

const header1=`<tr><th colspan="7">${year}년</th></tr>`;
        const header2=`<tr><th colspan="7">${month}월</th></tr>`;
        const header3 = 
        `<tr>
            <th>일</th>
            <th>월</th>
            <th>화</th>
            <th>수</th>
            <th>목</th>
            <th>금</th>
            <th>토</th>
        </tr>`;

 

달력의 헤더와 요일 제목을 포함한 HTML 문자열을 생성한다.

for (let i = 0; i < firstDate; i++) {
            days += '<td></td>';
        }

 

첫 날 이전의 공백을 처리하기 위해 firstDate 만큼 빈 <td>를 추가한다.

for (let day = 1; day <= lastDate; day++) {
        	let isSelected = '';
        	if (day == date) {
        	    isSelected = 'selected';
        	}
                days += `<td class="${isSelected}" onclick="selectDate(${day})">${day}</td>`;
                if ((day + firstDate) % 7 == 0) {
                    days += '</tr><tr>';
                }
            }

 

날짜를 <td>로 추가하고, 클릭 시 selectDate 함수를 호출하여 날짜를 선택할 수 있도록 한다.

 calendarEl.innerHTML = header1+header2+header3+ days;

 

마지막으로, 생성된 HTML을 달력 테이블에 삽입한다.

function selectDate(day) {}

사용자가 일자를 선택했을 때 호출되는 함수

const allTd = document.querySelectorAll('#calendar td');
        for (let i = 0; i < allTd.length; i++) {
            allTd[i].classList.remove('selected');
        }

        for (let i = 0; i < allTd.length; i++) {
            if (allTd[i].innerText == day) {
            	allTd[i].classList.add('selected');
            	break;
            }
        }

 

모든 날짜 셀에서 selected 클래스를 제거한 후, 선택한 날짜 셀에 selected 클래스를 추가하여 강조한다.

const year = document.querySelector('#year').value;
const month = document.querySelector('#selmonth').value;
const div1El = document.querySelector('#div1');

		let date = `<div>`;
		date += `</div>`;
		date += `<b>${year}년 ${month}월 ${day}일을 선택하였습니다.</b>`;
			div1El.innerHTML = date;
			div1.innerHTML += `<b>${year}년 ${month}월을 선택하였습니다</b>`;

 

선택한 날짜 정보를 div1에 표시한다.

window.onload = function() {}

let optmonth = '<option>선택</option>';//월
for (let i = 1; i <= 12; i++) {
			optmonth += `<option>${i}</option>`;
		}
		selmonthEl.innerHTML = optmonth;

월 선택 옵션에 1부터 12까지의 옵션을 추가한다.

selmonthEl.onchange = function(event) {}

선택된 월에 따라 해당 월의 마지막 날짜를 기반으로 날짜 옵션을 생성한다.

			let year = yearEl.value;//년
			let month = selmonthEl.value;
			let date=seldateEl.value;

이떄, 이벤트핸들러가 호출될 때마다 위와 같이 변수를 업데이트한다.(onchange함수를 사용했기 때문에 전역변수와는 별개로 따로 변수를 업데이트해야함.)

btn1.addEventListener('click',function() {createCalendar(year, month, date);});

버튼 클릭 시 createCalendar 함수를 호출하여 선택된 연도와 월, 일에 따라 달력을 생성한다.

'JAVACSCRIPT' 카테고리의 다른 글

[js]request.getParameter  (0) 2024.09.18
[js]생성자 함수(Constructor function)와 프로토타입 메서드(prototype method)  (1) 2024.09.18
[js] 배열  (0) 2024.09.17
[js]주요 이벤트(drag and drop)  (0) 2024.09.16
[js]java script 연산자  (0) 2024.09.16
'JAVACSCRIPT' 카테고리의 다른 글
  • [js]request.getParameter
  • [js]생성자 함수(Constructor function)와 프로토타입 메서드(prototype method)
  • [js] 배열
  • [js]주요 이벤트(drag and drop)
라텐느
라텐느
이제 막 개발을 시작한 초보가 개인공부를 하는 공간입니다.
  • 라텐느
    괴발개발
    라텐느
    • 개발자 (150)
      • HTML|CSS (14)
      • JAVA (29)
      • JAVACSCRIPT (15)
      • SQL (16)
      • 기타 (5)
      • JSP (2)
      • SPRING (13)
      • SPRING BOOT (6)
      • Git&GitHub (1)
      • 시행착오 (2)
      • 개발일지 (35)
        • GreenMiniProject1 (12)
        • GreenMiniProject2 (9)
        • GreenFinalProject (14)
      • Flutter (5)
      • 자격증 (1)
        • SQLD (1)
      • AWS (2)
      • Linux (1)
  • 블로그 메뉴

    • 홈
    • 방명록
    • 태그
  • 링크

    • GitHub
  • 공지사항

  • 인기 글

  • 태그

    JS
    오블완
    java
    일지
    링크
    개발자
    db
    HTML
    SQL
    티스토리챌린지
    CSS
    AJAX
    자기계발
    부트캠프
    input
    javascript
    JQuery
    태그
    link
    tag
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.0
라텐느
[js] javascript로 달력만들기
상단으로

티스토리툴바