Debug & Think

[C# 시간 계산] DateTime과 TimeSpan 차이와 활용법 정리 본문

카테고리 없음

[C# 시간 계산] DateTime과 TimeSpan 차이와 활용법 정리

J.Note 2025. 7. 8. 11:29

설명:C#에서 시간 계산을 정확하게 처리하는 방법을 알려드립니다. DateTime과 TimeSpan의 차이, 시간 빼기, 더하기, 포맷팅까지 모두 정리했습니다.


 

📌 개요

C#에서 시각 정보를 다룰 때 DateTime과 TimeSpan은 가장 많이 사용되는 구조체입니다. 이 글에서는 두 개념의 차이점과 활용법을 정리하여, 시간 계산과 출력 시 헷갈리지 않도록 설명드립니다.


✅ DateTime: 날짜와 시간 모두 포함

DateTime now = DateTime.Now; 
Console.WriteLine(now.ToString("yyyy-MM-dd HH:mm:ss")); // 2025-07-08 14:05:03
  • DateTime은 특정 시점을 나타냅니다.
  • .AddMinutes(), .AddHours() 등을 통해 시간 계산이 가능합니다.

✅ TimeSpan: 시간 간격 계산 전용

TimeSpan time = new TimeSpan(1, 30, 0); // 1시간 30분
Console.WriteLine(time.TotalMinutes);   // 90
  • 두 시간 차이 계산에 유용합니다.
  • 예: end - start로 두 DateTime 간 차이를 구할 수 있습니다.

✅ 실전 예제(특정시간에서 45분을 뺀다면?)

1) DateTime 방식

DateTime dt = new DateTime(1, 1, 1, hour, minute, 0); 
dt = dt.AddMinutes(-45); 
Console.WriteLine($"{dt.Hour:D2} {dt.Minute:D2}");
 

2) TimeSpan 방식

TimeSpan time = new TimeSpan(hour, minute, 0).Add(TimeSpan.FromMinutes(-45)); if (time.TotalMinutes < 0) time = time.Add(TimeSpan.FromHours(24)); Console.WriteLine($"{time.Hours:D2} {time.Minutes:D2}");
TimeSpan time = new TimeSpan(hour, minute, 0);
time.Add(TimeSpan.FromMinutes(-45)); 
if (time.TotalMinutes < 0) time = time.Add(TimeSpan.FromHours(24)); // ex) 0시 30분에서 빼면 23:45
Console.WriteLine($"{time.Hours:D2} {time.Minutes:D2}");

✅ 요약정리

구분 DateTime TimeSpan
목적 시점 표현 간격 계산
사용 예 예약 시간 남은 시간
특징 날짜 포함 순수 시간만

📝 마무리

  • 날짜/시간 계산에는 DateTime을, 시간 간격 계산에는 TimeSpan을 사용하는 것이 적절합니다.
  • 시간을 가독성 있게 출력하고 싶을 때는 ToString("yyyy-MM-dd HH:mm:ss")와 같은 형식 지정 문자열(Format String)을 함께 사용하면 좋습니다.

🔗 숫자, 날짜, 문자열 출력 형식이 헷갈리신다면?

👉  [C# 포맷 정리] 숫자, 날짜, 문자열 포맷 한눈에 보기   

       이 글도 함께 참고하시면 포맷 설정에 많은 도움이 됩니다.

 

[C# 포맷 정리] 숫자, 날짜, 문자열 포맷 한눈에 보기

설명: C#의 숫자 포맷(D, F, N), 날짜 포맷(yyyy, MM, dd), 문자열(string), 열거형(enum) 까지 실무에서 자주 쓰이는 포맷 형식을 정리했습니다. 📌이 글에서는 자주 쓰는 포맷 코드를 예제와 함께 정리하

debug-think.tistory.com