C# 날짜계산

Posted by Albert 3715Day 19Hour 55Min 46Sec ago [2015-02-16]

제가 이곳 저곳을 돌아다니면서 얻은 건데요...저같이 궁금하신분들이 일을것 같아서 올립니다.
날짜데이터를 다룰때 참조하세요~
 

 1. 일단 txt를 날짜 형식으로 변환하는 방법
  DateTime convDate = DateTime.Now;  //기본값으로 현재 날짜를 넣어 둡니다.
  string strDate = "2004-03-18";   //임의의 날짜값을 받습니다.
  convDate = DateTime.Parse(strDate);  // 스트링 형식의 날짜를 Date 형식으로 바꾸어 놓은 것입니다. 
이 형변환을 통해 나중에 날짜 비교를 할때  사용하는 거죠...

2. 두 날짜간의 순서 비교
  이 비교는 단순비교로 두개의 날짜를 비교해서 값을 리턴해 주는 것으로,
  기준값(t1) 보다 비교값(t2)가 더 크면(즉 t1의 날짜가 t2의 날자가 더 나중이면, t1<T2) 리턴, 
  기준값(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 = DateTime.Parse("2004-03-17");
  DateTime t2 = DateTime.Parse("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 가 화면에 표시 되겠죠?...ㅎㅎㅎ

  또한 현재 날짜와 비교할때는 이렇게 써도 됩니다.
  if(t1.CompareTo(DateTime.Now) < 0){
   //현재일 보다 빠르면...
  } else {
  //현재일 보다 느리면...
  }


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://www.devpia.com/MAEUL/Contents/Detail.aspx?BoardID=8&MAEULNO=5&no=471




LIST

Copyright © 2014 visionboy.me All Right Reserved.