티스토리 뷰
반응형
우리가 흔히 보는 달력 형상의 솔루션들은 그 날짜를 계산하고 다루는 과정을 잘 이해해야 만들 수 있습니다.
코드를 작성하고 나름 그 동작을 설명하지요.
자바스크립트 코드를 활용해서 날짜라는 객체를 만든다면 그 것을 다루는 기술을 다루면 절반은 해낸 것으로 생각됩니다.
{{
var date = date || new Date(),
month = date.getMonth(),
year = date.getFullYear(),
first = new Date(year, month, 1),
last = new Date(year, month + 1, 0),
startingDay = first.getDay(),
thedate = new Date(year, month, 1 - startingDay),
dayclass = lastmonthcss,
today = new Date(),
i, j;
if (mode === 'week') {
thedate = new Date(date);
thedate.setDate(date.getDate() - date.getDay());
first = new Date(thedate);
last = new Date(thedate);
last.setDate(last.getDate()+6);
} else if (mode === 'day') {
thedate = new Date(date);
first = new Date(thedate);
last = new Date(thedate);
last.setDate(thedate.getDate() + 1);
}
}}
위의 생성인자에 대한 설명을 참고해서 다음의 코멘트를 달 수 있습니다.
위의 코드는 JavaScript를 사용하여 달력을 생성하는 과정에 필요한 변수들을 설정하고 있습니다.
주어진 날짜에 기반하여 특정 달에 대한 정보를 계산하며, 일주일 혹은 하루에 대한 정보를 계산하는 경우도 고려하고 있습니다.
자세한 설명은 다음과 같습니다:
- `var date = date || new Date()`: 주어진 date 변수가 존재하면 date 변수를 사용하고, 그렇지 않으면 현재 날짜와 시간을 나타내는 새로운 Date 객체를 생성합니다.
- `month = date.getMonth()`: 월을 나타내는 0부터 11까지의 정수를 반환합니다.
즉, 1월은 0, 2월은 1, ..., 12월은 11을 반환합니다.
- `year = date.getFullYear()`: 4자리 연도를 반환합니다.
- `first = new Date(year, month, 1)`: 그 달의 첫 날을 나타내는 Date 객체를 생성합니다.
- `last = new Date(year, month + 1, 0)`: 그 달의 마지막 날을 나타내는 Date 객체를 생성합니다.
- `startingDay = first.getDay()`: 그 달의 첫 날의 요일을 반환합니다.
0은 일요일, 1은 월요일, ..., 6은 토요일을 나타냅니다.
- `thedate = new Date(year, month, 1 - startingDay)`: 달력에서 표시해야 할 첫 번째 날짜를 계산합니다.
달력의 첫 주에서 이전 달의 일부를 표시해야 하는 경우를 고려하고 있습니다.
- `dayclass = lastmonthcss`: 초기에는 이전 달의 날짜를 표시하는 CSS 클래스를 설정합니다.
- `today = new Date()`: 현재 날짜와 시간을 나타내는 새로운 Date 객체를 생성합니다.
이후 코드는 'week' 모드와 'day' 모드를 확인하여 `thedate`, `first`, `last` 변수를 다시 설정하는 부분입니다.
각각 주와 일 단위의 달력을 보여줄 때 필요한 날짜 정보를 계산하고 있습니다.
'week' 모드에서는 시작 요일을 주어진 날짜로, 마지막 요일을 주어진 날짜로부터 6일 뒤로 설정합니다.
'day' 모드에서는 시작 요일과 마지막 요일을 모두 주어진 날짜로 설정합니다.
이를 통해 주 또는 일 단위의 달력을 생성할 수 있습니다.
반응형
'IT tech Coding > javascript' 카테고리의 다른 글
[javascript] table에서 두줄로 되어 있을때 합쳐진 셀에서 나눠진 아랫셀의 합계를 내고 싶을때 알아야 할 코드 (1) | 2023.07.02 |
---|---|
[php+javascript] 파일드랍 후 파일리스트 만들기 파일을 일정한 공간에 떨어뜨려서 리스트와 파일첨부 만들어보기 (0) | 2023.07.01 |
python 라이브러리를 혹시 자바스크립트에서 불러서 쓰는 방법은 없는가? (0) | 2023.05.28 |
[웹개발] 멀티파일 저장하는 함수들 나름 정리 (0) | 2023.05.21 |
html의 canvas의 크기는 얼마까지 가능할까? (0) | 2023.05.20 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- 코딩효율성
- 뫄프로그래밍
- ajax오류메시지
- #InstallForge
- 오블완
- 구글드라이브API
- 오토핫키가이드
- General error: 2031
- 캐드자동작도
- Bootstrap 5
- 1. #웹개발 2. #로트번호 3. #성적서보기 4. #ajax 5. #jquery 6. #php 7. #프론트엔드 8. #백엔드 9. #부트스트랩 10. #웹기능구현
- 엑셀입력보호
- json파일편하게보는법
- 도면자동생성
- chatGPT3.5파이썬버전
- 테크에능한여성
- 코딩튜토리얼
- 엑셀셀보호
- 티스토리챌린지
- isset을 적용해야 하는 이유
- 효율적코딩방법
- #프로그램설치
- 스크립트작성기초
- #파이썬패키징
- coalesce는 한국어로 "코얼레스크" 또는 "코얼리스"
- 파이썬코드줄바꿈방법
- 엑셀보호
- 프로그래머생활
- json파일형태보기
- sql문장 날짜계산
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
글 보관함