본문 바로가기
프로그래밍

[C#]DateTime과 TimeSpan, Stopwatch 사용하기

by minimax95 2020. 6. 15.

이번 포스팅에서는 프로그램 개발 시 자주 사용하는 시간, 시간 연산, 시간 측정에 대해서 알아보겠습니다.

 

DateTime은 값 형식의 구조체로 날짜와 시간에 대한 정보를 가져올 때 사용합니다.

정적 속성 중에서 가장 많이 사용하는 Now와 Year, Month, Day, Hour, Minute, Millisecond는 getter를 통해서 바로 참조가 가능합니다.

 

// 현재 날짜와 시간 구하기

DateTime now = DateTime.Now;

Console.WriteLine(now);

 

// 올해의 기념일 지정 출력

DateTime dayChristmas = new DateTime(now.Year, 12, 25);

Console.WriteLine(dayChristmas);

 

// 출력결과

콘솔에 현재 날짜와 시간, 그리고 크리스마스가 출력된 것을 볼 수 있습니다.

 

날짜의 포맷을 지정하여 출력할 수도 있는 데 사용법은 아래와 같다.

 

// 날짜 포맷 변경

DateTime now = DateTime.Now;

Console.WriteLine(now.ToString("yyyy-MM-dd HH:mm:dd"));

Console.WriteLine(String.Format("{0:yyyy.MM.dd HH:mm}", now));

 

// 출력 결과

 

다음은 TimeSpan 사용법에 대해 살펴보겠습니다.

DateTime 타입에 대해 유일하게 허용되는 사칙연산이 빼기입니다. DateTime을 통한 빼기 연산을 하게 되면 시간 간격을 나타내는 TimeSpan으로 출력할 수 있습니다.

사용방법은 매우 간단합니다.

// D-Day 남은 날짜

DateTime dayChristmas = new DateTime(DateTime.Now.Year, 12, 25);

DateTime now = DateTime.Now;

 

TimeSpan gap = dayChristmas - now;

Console.WriteLine("남은 날짜 : " + gap.TotalDays);

 

// 출력 결과

 

마지막으로 Stopwatch에 대해 살펴보겠습니다.

어릴 적에 Stopwatch기능이 있는 전자시계를 차고 다니는 친구들을 보면서 많이 부러워했던 기억이 나는데요, 

이 Stopwatch는 소스코드 내에서 어떤 함수의 수행 시간을 구하는데 매우 유용합니다.

특히 병렬 프로그래밍 등에서 성능 향상 측정을 위해 많이 사용됩니다.

사용 방법은 아래와 같습니다.

 

int nCount = 0;

Stopwatch st = new Stopwatch( );

st.Start( );

for(int i = 1; i <= 100; ++i)

{

    nCount += i;

}

st.Stop( );

 

Console.WriteLine("백까지의 합은 : " + nCount + ", 계산 시간 : " + st.Elapsed.ToString());

 

// 출력 결과

Stopwatch를 사용하기 위해서는 using System.Diagnostics; 네임스페이스를 추가시켜줘야 합니다.

측정을 시작하는 곳에서 Start( ) 함수 호출, 측정이 종료되는 지점에서 Stop( ) 함수 호출만 하면 구간 내 수행 시간을 구해낼 수 있으며 위에서 사용했던 TimeSpan을 이용해서 아래와 같이 Format을 지정하여 출력할 수도 있습니다.

 

이상으로 DateTime과 TimeSpan, Stopwatch에 대한 포스팅을 마치도록 하겠습니다.

감사합니다.

댓글