C #을 사용하여 두 DateTime 객체의 시간 차이를 어떻게 얻습니까?


159

DateTimeC #을 사용하여 두 객체 의 시간 차이를 어떻게 알 수 있습니까?

답변:


227

다음 예제는이를 수행하는 방법을 보여줍니다.

DateTime a = new DateTime(2010, 05, 12, 13, 15, 00);
DateTime b = new DateTime(2010, 05, 12, 13, 45, 00);
Console.WriteLine(b.Subtract(a).TotalMinutes);

실행하면 날짜 / 시간간에 30 분의 차이가 있으므로 "30"이 인쇄됩니다.

결과 는 다른 유용한 속성을 제공 DateTime.Subtract(DateTime x)하는 TimeSpan 객체 입니다.


5
차이점을 표시하려면 다음과 같이하십시오 Console.WriteLine((a - b).ToString(@"hh\:mm\:ss")). 참조 : MSDN Custom TimeSpan 형식
ishmael 20:07의

이것은 나를 위해 일했습니다. 클라이언트가 REST 호출을하고 답장을 얻는 데 몇 초가 걸리기를 원했습니다.
Ziggler

1
사용에주의하십시오 TotalMinutes! (안 Minutes)
샤 하르 Shokrani

64

당신은 TimeSpan구조체를 원합니다 :

TimeSpan diff = dateTime1 - dateTime2;

TimeSpan 객체는 양수 또는 음수 일,시, 분, 초 및 초 단위로 측정되는 시간 간격 (시간 또는 경과 시간)을 나타냅니다. TimeSpan 구조는 또한 시간이 특정 날짜와 관련이없는 경우에만 시간을 나타내는 데 사용될 수 있습니다.

이 구조에서 일,시, 분, 초 및 밀리 초를 되찾기위한 다양한 방법이 있습니다.

차이점에 관심이 있다면 :

TimeSpan diff = Math.Abs(dateTime1 - dateTime2);

순서에 관계없이 시간 사이에 긍정적 인 차이를 줄 것입니다.

시간 구성 요소를 얻었지만 자정별로 시간을 나눌 수있는 경우 실제 차이를 얻으려면 범위에 24 시간을 추가해야합니다.

TimeSpan diff = dateTime1 - dateTime2;
if (diff < 0)
{
    diff = diff + TimeSpan.FromDays(1);
}

안녕하세요, datetime2가 09:00이고 dateTime1이 18:00이면 diff는 09Hours 00 분입니다. datetime2의 방정식은 21:00이고 dateTime1은 03:00이면 차이는 음수입니다. 이것을 해결하는 방법?
Pranesh Janarthanan

@Pranesh-개체에 날짜가 포함되어 있으면 문제가 없습니다. 시간이 포함되어 있지 않으면 절대 차이를 취하거나 시간 범위에 24 시간을 더하여 양의 차이를줍니다. 올바른 것은 응용 프로그램에 따라 다릅니다.
ChrisF

그래, 나는 그 의견을 이미 제거했다! ur 설명을위한 코드 예제를 보여 주시겠습니까?
Pranesh Janarthanan

30

필요한 것은 TimeSpan 을 반환하는 DateTime 클래스 Subtract 메서드 를 사용하는 것 입니다.

var dateOne = DateTime.Now;
var dateTwo = DateTime.Now.AddMinutes(-5);
var diff = dateTwo.Subtract(dateOne);
var res = String.Format("{0}:{1}:{2}", diff.Hours,diff.Minutes,diff.Seconds));

10

내가 일반적으로하는 방법은 두 개의 DateTime을 빼는 것이므로 diff를 알려주는 TimeSpan을 얻습니다.

예를 들면 다음과 같습니다.

DateTime start = DateTime.Now;
// Do some work
TimeSpan timeDiff = DateTime.Now - start;
timeDiff.TotalMilliseconds;

4

둘 다 UTC 날짜-시간 값이면 할 수 있습니다 TimeSpan diff = dateTime1 - dateTime2;

그렇지 않으면 가능한 모든 경우에 정답을 얻을 수있는 기회는 0입니다.


3
 var startDate = new DateTime(2007, 3, 24);

 var endDate = new DateTime(2009, 6, 26);

 var dateDiff = endDate.Subtract(startDate);

 var date = string.Format("{0} years {1} months {2} days", (int)dateDiff.TotalDays / 365, 
 (int)(dateDiff.TotalDays % 365) / 30, (int)(dateDiff.TotalDays % 365) / 30);

 Console.WriteLine(date);

2

TimeSpan 을 사용해야합니다 . 샘플 코드는 다음과 같습니다.

TimeSpan sincelast = TimeSpan.FromTicks(DateTime.Now.Ticks - LastUpdate.Ticks);

2
아니면 그냥TimeSpan sincelast = DateTime.Now - LastUpdate;
벤 M

2
private void button1_Click(object sender, EventArgs e)
{
    TimeSpan timespan;
    timespan = dateTimePicker2.Value - dateTimePicker1.Value;
    int timeDifference = timespan.Days;
    MessageBox.Show(timeDifference.ToString());
}

2

다음과 같은 방법으로 두 날짜 / 시간 개체 간의 차이를 얻을 수 있습니다. DateTime 오브젝트 dt1 및 dt2가 있고 코드가 있다고 가정하십시오.

TimeSpan diff = dt2.Subtract(dt1);
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.