1. 일단 txt를 날짜 형식으로 변환하는 방법

DateTime convDate = DateTime.Now;   //기본값으로 현재 날짜를 넣어 둡니다.
string strDate = "2004-03-18";              //임의의 날짜값을 받습니다.
convDate = DateTime.Parse(strDate);   // 스트링 형식의 날짜를 Date 형식으로 바꾸어 놓은 것입니다.

이 형변환을 통해 나중에 날짜 비교를 할때  사용하는 거죠...

2. 두 날짜간의 순서 비교
이 비교는 단순비교로 두개의 날짜를 비교해서 값을 리턴해 주는 것으로,
기준값(t1) 보다 비교값(t2)가 더 크면  (즉 t1의 날짜가 t2의 날자가 더 나중이면, t1<t2) -1을 리턴,   기준값(t1) 보다 비교값(t2)가 더 작으면(즉 t1의 날짜가 t2의 날자가 더 이전이면, t1>t2) 1을 리턴,  기준값(t1) 보다 비교값(t2)가 같으면(즉 t1의 날짜가 t2의 날자가 같으면, t1=t2) 0을 리턴합니다.

MSDN의 내용을 발췌하면...

DateTime t1 = new DateTime(100);
DateTime t2 = new DateTime(20);
if (DateTime.Compare(t1, t2) >  0) Console.WriteLine("t1 > t2");
if (DateTime.Compare(t1, t2) == 0) Console.WriteLine("t1 == t2");
if (DateTime.Compare(t1, t2) <  0) Console.WriteLine("t1 < t2");

이렇게 되는 것이구요.
실제 날짜를 비교해서 넣으면,(<--저 같은 초보를 위해...)

DateTime t1 = new DateTime("2004-03-17");
DateTime t2 = new DateTime("2004-03-18");
if (DateTime.Compare(t1, t2) >  0) Console.WriteLine("t1 > t2");
if (DateTime.Compare(t1, t2) == 0) Console.WriteLine("t1 == t2");
if (DateTime.Compare(t1, t2) <  0) Console.WriteLine("t1 < t2");

이러면 답은...뭐가 될까요?...답은...  -1이 리턴되며  표시는 t1< t2 가 화면에 표시 되겠죠?...ㅎㅎㅎ

3. 특정일에서 특정일 더하거나 빼거나 해서 날짜 구하는 법
오늘을 기준으로 날짜를 30일 더하거나 빼는 방법은...

30일 더하는 방법 : DateTime.Today.AddDays(30).ToString("yyyyMMdd")
30일 빼는 방법 : DateTime.Today.AddDays(-30).ToString("yyyyMMdd")

4. 두 날짜 사이의 간격을 구하는 방법
DateDiff 인가 하는 것이 VB에도 있구, SQL에도 있는 것인데...C#에서는 이렇게 한답니다.(사실은 이것 땜시 공부를 한거죠...ㅎㅎㅎ...)   TimeSpan을 사용하는 것인데 두가지 방법이 있습니다. 뭐...같다고도 할 수 있죠...

DateTime t1 = DateTime.Now;    //날짜형 변수 t1을 선언하는데 기본값으로 현재 날짜를 설정합니다.
DateTime t2 = DateTime.Now;    //아래부분은 사실 두개의 택스트 박스의 값을 입력 받은 것입니다.
t1 = DateTime.Parse(txt_StartDay.Text); // 이 내용은 한줄로도 가능하며...이런 형식입니다. 괜히 길게썼죠?...
t2 = DateTime.Parse(txt_EndDay.Text);  // DateTime t1 =DatTime.Parse("2004-03-18");

//TimeSpan을 쓰는 두가지 방법. 방법(1)
TimeSpan t3 = t2.Subtract(t1);

//TimeSpan을 쓰는 두가지 방법. 방법(2)
TimeSpan t4 = t2 - t1;

//위의 날짜차이를 계산하여 int 형식으로 리턴해 주며 쓰기는 이렇게 씁니다. t5, t6의 값은 같습니다.
int t5 = t3.Days;
int t6 = t4.Days;

만약 t1의 날짜가 "2004-03-18" 이고 t2의 날짜가 "2004-03-01" 이라면 -17을 리턴해 주겠죠?

출처 : http://blog.naver.com/corea4004/120007284388

+ Recent posts