CODE CAVE

[JavaScript/자바스크립트] 특정 날짜에서 무슨 요일인지 구하기 본문

Web/Front-End

[JavaScript/자바스크립트] 특정 날짜에서 무슨 요일인지 구하기

코드케이브 2016. 7. 28. 02:47

이번 포스팅으로 공유드릴 내용은

어떤 날짜가 있을 때, 그 날이 무슨 요일인지 구하는 코드 입니다.


왠지 많이들 필요하실 것 같아서 생각할 시간을 줄이고 복붙 하실 수 있게 도움이 되고자 공유드립니다!

아래 제가 작성한 소스코드 3줄을 함수 하나를 만드시고 그 안에 붙혀 넣으시면 됩니다.

마지막 코드에 보면 "return"이란게 있으니 함수라는 것은 말하지 않아도 아시겠죠?!


자바스크립트를 기초부터 다시 살펴보고 싶으신 분들은.. "자바스크립트 이야기"라고 제 블로그에서 검색하시면 다양한 이야기들이 나옵니다. ㅎㅎ


var week = ['일', '월', '화', '수', '목', '금', '토'];
var dayOfWeek = week[new Date('2016-07-28').getDay()];
return dayOfWeek;


위 코드를 대략적으로만 설명 드리자면 저 위의 예제는 배열과 Date함수를 사용하여 만든 코드 입니다.

요일 값을 배열에 저장하고 인덱스에 date 객체를 활용함으로써 어떤 날짜의 요일을 구할 수 있게 되는 코드 입니다.



리마인드 겸 배열 선언에 대해 간단하게 살펴볼까요?

자바스크립트에서 배열 선언은 매우 간단합니다.


var array = []; 혹은 var array = new Array();


입니다. 

하지만 실제로 전자를 훨씬 많이 쓰죠. 

후자의 문법은 다른 언어에서도 볼 수 있는데 자바스크립트의 강력함은 전자같은 간결한 문법에서 나온다고 봅니다.


위의 배열 선언은 대입과 동시에 값을 정하고 있습니다.

즉 배열 선언과 동시에 값을 대입한 경우입니다. 인덱스 0 부터 순서대로 일~토 까지 값을 초기화 해줍니다.


그리고 조금 다른 이야기인데 var를 잘모르고 사용하는 복붙러가 있다고 들어서 집고 넘어가겠습니다.

var 키워드는 지역변수를 선언할 때 씁니다.


만약 var를 쓰지 않는 다면 그 변수는 전역객체가 되어서 window의 어디서든 사용할 수 있게 됩니다.

전역변수의 남용은 좋지 않다는 것은, 자신이 언젠가 한번 느끼게 될 거라고 생각되네요..

저도 이해는 하고 얘기는 많이 들었지만 진짜 큰 깨닭음을 얻은 것은 안드로이드 프로그래밍에서 static 변수 남용으로 인한 문제였습니다.


아무튼 다시 var 이야기로 돌아가겠습니다.

위에서 작성한 요일 구하기 함수는 어떤 날짜의 요일을 구해서 반환(return) 해주는 함수인데 

저때 잠깐 썼던 week와 dayOfWeek 변수가 함수가 종료되었는데도 불구하고 계속 남아있다면 낭비겠죠?


var로 하게되면 변수의 유요범위가 저 함수의 지역으로 제한되게 됩니다.

다른 데서 dayOfWeek 이라는 이름의 변수를 사용해도 문제가 없습니다. 

항상 var로 선언하는 습관을 들이는게 좋겠습니다~



다음으로 날짜(Date) 객체 사용법입니다.


날짜객체는 자바스크립트에서 new Date()로 만들 수 있습니다.


Date 객체의 파라미터로는 날짜 문자열을 넣으시면 되는데 그 형식은 자유롭습니다.


위 코드에서는 2016-07-28 이라고 작성 했지만 2016.07.28 이렇게 작성 하셔도 됩니다.


시,분,초도 넣을 수 있습니다. 2016.07.28 10:24:01 이런식으로도 가능합니다.


나중에 필요하시면 이 날짜 객체를 TimeStamp 값으로 얻어야 할 경우가 있을 수도 있는데 인터넷에 찾아보시면 자료가 많을 거예요!


아무튼 위에서 2016-07-28 이란 데이터를 Date 객체로 만들어서 Date 객체의 getDay() 메서드로 이 날짜가 무슨 요일인지 숫자 값으로 반환합니다.


getDay가 반환하는 요일 값의 범위는 일요일(0) 부터 토요일(6) 입니다.


오늘(7월28)일은 목요일이므로 4라는 정수가 반환되고 week의 4번째 인덱스인 '목' 이라는 문자를 return 하게 됩니다.


week[new Date('2016-07-28').getDay()] =====> week[4] =====> '목'



이런식으로 날짜의 요일을 구할 수 있습니다.


요새 어떤 앱이나 사이트를 만들던지 검색기능을 포함한 다양한 곳에서 날짜 관련 함수를 쓰실일이 많으실텐데요~


이번 기회에 Date 객체나 TimeStamp 같은 개념에 대해서 익혀보시는 시간이 되셨으면 좋겠어요~



프로그래밍은 기초가 중요하다는 말도 굉장히 많은데, 저도 기초를 대충 익히고 바로 실무로 들어와서 많은 개발을 했다가 요새 다시 공부하면서 기초가 중요한 것을 깨닫고 있습니다.


그렇지만 개인적으론 기초를 너무 완벽하게 하고 실무로 넘어가는 것 보다 어느정도 공부하고 바로 프로젝트에 들어가는 것이 실력이 빨리 향상 되는 방법인 것 같아요!


저도 기초 공부할 때는 공부하다가 지쳐서 잠깐 손 놓다가 다시 좀 지나서 "아 공부한지 좀 지나서 기억이 안난다, 처음 부터 다시 차근차근 해봐야겠다" 라는 생각을 꾀 자주했었거든요..


이러면 시간이 좀 아까운 것 같아요. 의지력이 굉장히 강하지 않다면 그냥 어느정도 배우고 인터넷 검색을 활용하면서 하나의 프로젝트를 진행해보시고 꾸역꾸역 막 완성도가 높지 않아도 좋으니 만들어보고, 그 다음 다시 기초를 공부하시면 아마 더 와닿는게 많으실 거예요!


아 이건 이렇게 쓰는거였구나, 이건 이래서 이거구나 등등 깨닫는 정도가 다를거예요.


그럼 모두 열공 열일 하시고! 즐거운 프로그래밍 되세요!






유용한 정보가 되셨다면 아래 공감 버튼을 꾹 눌러주세요!