'.net'에 해당되는 글 18

  1. 2011.08.25 c#] 날짜 비교 처리
카테고리 없음 | Posted by 낫기법필 2011. 8. 25. 13:38

c#] 날짜 비교 처리

[쥔장] ==========================================
아는 내용이지만 정리가 잘 되어있어서 다른 분들에게도 도움이 되고, 나에게도 나중에 도움이 될 수도 있어 일단은 퍼왔다.
=================================================


1. C#에서 String 형식으로 넘어온 날짜와 시간 데이터를 Datetime 형식으로 형변환 하기

예) string sDate = “20100127″; string sTime = “16:19″;
     -> DateTime _sdt = DateTime.ParseExact(sDate + ” ” + sTime, “yyyyMMdd H:mm”, null);
2. 두 날짜 사이의 시간 간격 구하기

예) TimeSpan tDiff = _edt.Subtract(_sdt);
     if (tDiff.TotalHours > 1)
        Console.Write(”두 날짜 사이의 시간 간격이 1시간을 넘어 갑니다.”);

 

3. 두 날짜간의 미래와 과거 혹은 같은날 여부를 확인하기 위한 코드

 이 비교는 단순비교로 두개의 날짜를 비교해서 값을 return 한다.

  
    기준값(t1) 보다 비교값(t2)가 더 크면,   return -1;
    기준값(t1) 보다 비교값(t2)가 같으면,    return 0;
    기준값(t1) 보다 비교값(t2)가 더 작으면,  return 1;
      
  
    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
    {
        // 현재일 보다 느리면
    }
  

using System;
using System.Drawing;
using System.Windows.Forms;

namespace Exams
{
    public partial class EtcTest : Form
    {
        public EtcTest()
        {
            InitializeComponent();
        }

        private void simpleButton1_Click(object sender, EventArgs e)
        {
            DateTime dt1 = new DateTime(2009, 1, 1);
            DateTime dt2 = new DateTime(2009, 2, 1);
            DateTime dt3 = new DateTime(2009, 1, 1);

            int compare1 = dt1.CompareTo(dt2);  //-1 : dt2보다 작음(과거)
            int compare2 = dt2.CompareTo(dt1);  // 1 : dt1보다 큼(미래)
            int compare3 = dt3.CompareTo(dt1);  // 0 : dt1과 같음(같은날)
        }
    }
}

 

3. 특정일에서 특정일 더하거나 빼거나 해서 날짜 구하는 법

50   
51     오늘을 기준으로 날짜를 30일 더하거나 빼는 방법
52   
53     30일 더하는 방법 :    DateTime.Today.AddDays(30).ToString("yyyyMMdd");
54     30일 빼는 방법 : DateTime.Today.AddDays(-30).ToString("yyyyMMdd");
55   
56 4. 두 날짜 사이의 간격을 구하는 방법
57   
58     DateDiff 사용
59   
60     TimeSpan을 사용하는 두가지 방법
61   
62     DateTime t1 = DateTime.Now; // 날짜형 변수 t1을 선언. 기본값으로 현재 날짜 설정
63     DateTime t2 = DateTime.Now;
64     t1 = DateTime.Parse(txt_StartDay.Text);
65     t2 = DateTime.Parse(txt_EndDay.Text);   // ex) DateTime t1 = DatTime.Parse("2004-03-18");
66   
67     // TimeSpan을 쓰는 방법(1)
68     TimeSpan t3 = t2.Subtract(t1);
69   
70     // TimeSpan을 쓰는 방법(2)
71     TimeSpan t4 = t2 - t1;
72   
73     // 위의 날짜차이를 계산하여 int 형식으로 리턴 (t5, t6의 값은 같음)
74     int t5 = t3.Days;
75     int t6 = t4.Days;
76   
77     만약 t1 의 날짜가 "2004-03-18" 이고 t2 의 날짜가 "2004-03-01" 이라면 -17을 리턴함.
1. 일단 txt를 날짜 형식으로 변환하는 방법
04   
05     DateTime convDate = DateTime.Now;   // 기본값으로 현재 날짜를 넣어 둡니다.
06     string strDate = "2004-03-18";      // 임의의 날짜값을 받습니다.
07     convDate = DateTime.Parse(strDate); // 스트링 형식의 날짜를 Date 형식으로 바꾸어 놓은 것입니다. 
08       
09     이 형변환을 통해 나중에 날짜 비교를 할때 사용