본문 바로가기
팁 & 노하우/C#

C# (asp.net) 날짜 차이, 시간 차이 구하기 - 초보 개발자 레벨 업~

by 대디동동 2023. 10. 19.
728x90

안녕하세요. 대디동동입니다.

 

일상생활에서 날짜를 많이 사용하듯 프로그램에서도 날짜 관련한 코딩이 참 많습니다.

이번 게시물에서는 프로그램 개발시에 많이 사용하는데 막상 어떻게 해야 되는지 잘 생각나지 않는

두개의 날짜 차이 및 시간 차이를 계산하는 방법을 설명해드리겠습니다.

 

C# (asp.net)에서 날짜 차이, 시간 차이를 구하려면 TimeSpan으로 변환해야 합니다.

 

TimeSpan을 이해하려면 Tick에 대한 개념을 이해해야 하는데,

간단하게 설명하면 Tick(틱) 하나는 100나노초 또는 1/1000만 초를 나타냅니다. 

밀리초 안에 10,000개의 틱(참조 TicksPerMillisecond)과 초당 1,000만 개의 틱이 있습니다.

 

아무튼, TimeSpan으로 변경하게 되면,

  • 밀리초 : TotalMilliseconds
  • 초 : TotalSeconds
  • 분 : TotalMinutes
  • 시간 : TotalHours
  • 일 : TotalDays

함수를 사용하여 반환되는 double 값을 통해 구할 수 있습니다.

 

시간 단위는 제 게시물을 참고하셔서 학습 효과를 높이길 추천합니다.

 

2023.09.14 - [코딩강좌/코딩상식] - 초보 프로그램 개발자가 알아야 할 시간 단위 s, ms, μs, ns

 

하지만, 실제 업무에서는 DB연동 작업이 필수이기에

DB에서 저장된 값은 사용하기 편하게 DateTime 형태로 변경해서 사용합니다.

 

따라서, 일반적으로 많이 사용하는 DateTime -> TimeSpan 변경해서 사용하는 방법을 설명해 드립니다.

직접 TimeSpan으로 형변환 해서 사용할 수도 있지만, 연월일시분초 형식과 맞지 않아서 잘 사용하지 않습니다.


DateTime -> TimeSpan 후 계산하기

//시작 시간
DateTime dateStart = Convert.ToDateTime("2023-10-18 08:00:00");

//종료 시간
DateTime dateEnd = Convert.ToDateTime("2023-10-19 07:00:00");

//종료 시간 - 시작시간 차이의 TimeSpan (Ticks 반환)
TimeSpan dateDiff = dateEnd - dateStart;

//몇 밀리세컨드
double totalMilliSecs = dateDiff.TotalMilliseconds;

//몇 초
double totalSecs = dateDiff.TotalSeconds;

//몇 분
double totalMinutes = dateDiff.TotalMinutes;

//몇 시간
double totalHours = dateDiff.TotalHours;

//몇 일
double totalDays = dateDiff.TotalDays;

//몇 틱
double totalTicks = dateDiff.Ticks;


//결과
시작시간 : 2023-10-18 08:00:00
종료시간 : 2023-10-19 08:00:00
몇 밀리초 차이 ? 82800000
몇 초 차이 ? 82800
몇 분 차이 ? 1380
몇 시간 차이 ? 23
몇 일 차이 ? 0.958333333333333
몇 틱 차이 ? 828000000000

몇 일 차이를 구하는 TotalDays 함수는 소숫점으로 반환되는 점만 유의해서 코딩하세요.

 

이번 시간에는 간단하게 시간 차이 계산하는 방법을 알려드렸으니

제 게시물을 통해서 초보 개발자님이 레벨 업 스탯을 올리는 시간이 되었으면 합니다.

 

반응형