안녕하세요. 대디동동입니다.
일상생활에서 날짜를 많이 사용하듯 프로그램에서도 날짜 관련한 코딩이 참 많습니다.
이번 게시물에서는 프로그램 개발시에 많이 사용하는데 막상 어떻게 해야 되는지 잘 생각나지 않는
두개의 날짜 차이 및 시간 차이를 계산하는 방법을 설명해드리겠습니다.
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 함수는 소숫점으로 반환되는 점만 유의해서 코딩하세요.
이번 시간에는 간단하게 시간 차이 계산하는 방법을 알려드렸으니
제 게시물을 통해서 초보 개발자님이 레벨 업 스탯을 올리는 시간이 되었으면 합니다.
'팁 & 노하우 > C#' 카테고리의 다른 글
Vue js 3, v-html button click event 처리 (버튼 클릭 이벤트) (0) | 2024.02.26 |
---|---|
영화진흥위원회 오픈API 활용 C#, .net 8.0, MVC, Vue.js (0) | 2024.02.20 |
C# 날짜 시간 변환 format 과 DateTime.ParseExact 만 알면 뭐든지 해결 (0) | 2023.11.06 |
c# 반복문 foreach, for 에서 인덱스 번호 가져오기 (0) | 2023.11.02 |
C# 차집합, 교집합, 합집합을 활용한 프로그램 예제 (0) | 2023.09.29 |