본문 바로가기

ASP.NET

DayOfWeek(원하는 요일 가져오기)_ 금주의 금요일을 찾아라!


오늘은 DayOfWeek를 정리해보고자 한다.
DayOfWeek 열거는 주 당 7일인 달력의 요일을 나타낸다.
범위는 DayOfWeek.Sunday를 나타내는 0에서 DayOfWeek.Saturday를 나타내는 6 사이이다.
(버전에 따라 월요일이 '0'으로 시작하기도 한다.)

DayOfWeek를 사용하여 " 금주의 금요일 날짜를 출력하라! "를 프로그램 해보자!
인터넷을 이리저리 뒤져보면 Case1과 같은 방법이 쏟아져 나온다.
하지만 이런 프로그램 방식으로는 나같이 맹꽁한 사람들은 이해하는데 적지않은 시간이 걸릴뿐만 아니라
"오늘 (201.12.27)로부터 금요일까지랑~ 내일(2010.12.28)로 부터 금요일까지는 필요한 연산이 다를텐데?"
라는 의문점이 생긴다. 그래서 나는 Case2를 강력추천한다!

Case1

DateTime NowDate = DateTime.Today;
DateTime startDay = NowDate.AddDays(((Convert.ToInt16(NowDate.DayOfWeek) == 0) ? -6 : -(int)NowDate.DayOfWeek + 1);

우리팀장님이 말씀하시길, 항상 내가 뭘 프로그램 할 것 인지 반드시 이해하고 시작하라고 말씀하셨다! 
자~ 특히나, DayOfWeek는 패턴을 이해하고 시작해야한다.
DayOfWeek는
일요일= 0,
월요일= 1,
화요일= 2,
수요일= 3,
목요일= 4,
금요일= 5,
토요일= 6의 정수를 반환한다.
오늘은(2010-12-27) 월요일은 1이고 내가 출력하고자 하는 금요일은 5이다.
내가 원하는 금요일(5)에서 오늘의 날(1)의 차이(-)를 오늘의 날짜에 다시 더해준다면  결국에는 원하는 날이 나온다.
5 - 1 = 4 후에 1(오늘) + 4(5-1로 나온 값) = 5(원하는 날)
이러한 패턴을 파악한다면, 어떤 요일이여도 고민 할 필요가 없다.
오늘을(2010-12-28) 화요일로 가정하고, 토요일을 찾아보자!
내가 원하는 토요일(6)에서 오늘의 날(2)의 차이(-)를 오늘의 날짜에 다시 더해준다면  역시나 원하는 날이 나온다.
6 - 2 = 4 후에 2 + 4 = 6(원하는 날)
패턴을 이해했다면, 이를 프로그램하는 것은 간단하다
 
Case2
★★

// 금주의 요일(금) 가져오기
DateTime NowDate = DateTime.Today;
        
 int toDay = Convert.ToInt32(NowDate.DayOfWeek);오늘
 int goalDay = Convert.ToInt32(DayOfWeek.Friday); 원하는 일 
DateTime fridayDate = NowDate.AddDays(goalDay - toDay);오늘 + ( 원하는 일 + 오늘 )
Response.Write(fridayDate.ToString());원하는 결과값 출력

'ASP.NET' 카테고리의 다른 글

asp.net_ 날짜가져오기 Tip  (0) 2011.02.21
javascript_ 글쓰기_판업경고창  (0) 2011.01.30
CSV파일 읽기_FileStream  (0) 2011.01.14
가상 디렉토리 & 일반 디렉토리  (0) 2011.01.08
File_Upload_Board 구성도  (0) 2011.01.08