SW/C#

날짜, 시간 비교 처리 DateTime.Compare

또난 2020. 8. 11. 10:11

https://docs.microsoft.com/ko-kr/dotnet/api/system.datetime.compare?view=netcore-3.1

 

DateTime.Compare(DateTime, DateTime) Method (System)

의 두 인스턴스를 비교하고 첫 번째 인스턴스가 두 번째 인스턴스보다 빠른지, 같은지, 늦은지를 나타내는 정수를 반환합니다.Compares two instances of and returns an integer that indicates whether the first instan

docs.microsoft.com

 

비교에 따라 -1, 0, 1을 리턴하는데   시작시간과 끝내는 시간 처리할 경우, 0과 1일 경우만 동작 처리하면 된다.

(-1은 무시)

 

using System;

// 날짜 나 시간 비교해서 해당 조건 기간이면 0,1을 리턴, 아니면 -1 리턴...
class MainClass {
  public static void Main (string[] args) {
    string startDate = "2020/08/11";
    string nowDate = "2020/08/08";
    string endDate = "2020/08/18";
    
    int yy = 2020;    byte mm = 8;    byte dd = 13;
    string dataFormat = string.Format("{0}/{1:D2}/{2:D2}",yy,mm,dd);    
    Console.WriteLine("dataFormat ==> {0}", dataFormat);  
    
    DateTime dtStart = Convert.ToDateTime(startDate).Date;
    DateTime dtNow = Convert.ToDateTime(nowDate).Date;
    DateTime dtEnd = Convert.ToDateTime(endDate).Date;
    int result = DateTime.Compare(dtNow, dtStart);
    int result2 = DateTime.Compare(dtNow, dtEnd);
    
    Console.WriteLine("============ Compare Day ===============");
    for(int i = 1; i<12; i++)
    {
      dtNow = dtNow.AddDays(1);
      result = DateTime.Compare(dtStart, dtNow);
      result2 = DateTime.Compare(dtNow, dtEnd);
      Console.WriteLine (" result {0} {1} {2} Date {3}", result, result2,  result*result2, dtNow.ToString("yyyy/MM/dd"));
    }
    
    string starttime = "13:15:00";
    string nowtime = "13:00:00";
    string endtime = "14:30:00";
    
    DateTime timeStart = Convert.ToDateTime(starttime);
    DateTime timeNow = Convert.ToDateTime(nowtime);
    DateTime timeEnd = Convert.ToDateTime(endtime);
    
    Console.WriteLine("============ Compare Time ===============");
    for(int i = 1; i<12; i++)
    {
      timeNow = timeNow.AddMinutes(10);
      result = DateTime.Compare(timeStart, timeNow);
      result2 = DateTime.Compare(timeNow, timeEnd);
      Console.WriteLine (" result {0} {1} {2} Date {3}", result, result2,  result*result2, timeNow.ToString("HH:mm:ss"));
    }
  }
}

// 실행

dataFormat ==> 2020/08/13
============ Compare Day ===============
 result 1 -1 -1 Date 2020/08/09
 result 1 -1 -1 Date 2020/08/10
 result 0 -1 0 Date 2020/08/11
 result -1 -1 1 Date 2020/08/12
 result -1 -1 1 Date 2020/08/13
 result -1 -1 1 Date 2020/08/14
 result -1 -1 1 Date 2020/08/15
 result -1 -1 1 Date 2020/08/16
 result -1 -1 1 Date 2020/08/17
 result -1 0 0 Date 2020/08/18
 result -1 1 -1 Date 2020/08/19
============ Compare Time ===============
 result 1 -1 -1 Date 13:10:00
 result -1 -1 1 Date 13:20:00
 result -1 -1 1 Date 13:30:00
 result -1 -1 1 Date 13:40:00
 result -1 -1 1 Date 13:50:00
 result -1 -1 1 Date 14:00:00
 result -1 -1 1 Date 14:10:00
 result -1 -1 1 Date 14:20:00
 result -1 0 0 Date 14:30:00
 result -1 1 -1 Date 14:40:00
 result -1 1 -1 Date 14:50:00