두 DateTimes C #의 차이점은 무엇입니까?


97

아래 두 날짜의 차이를 24로 반환 할 수있는 함수가 필요합니다.

DateTime a = new DateTime(2008, 01, 02, 06, 30, 00);
DateTime b = new DateTime(2008, 01, 03, 06, 30, 00);

답변:


186

다음을 수행 할 수 있습니다.

TimeSpan duration = b - a;

timespan 클래스에는 필요한 작업을 수행 할 수있는 많은 내장 메서드가 있습니다.

duration.TotalSeconds
duration.TotalMinutes

자세한 정보는 여기 에서 찾을 수 있습니다 .


1
TimeSpan span = x.ShiftEndTime.Subtract (x.ShiftStartTime) if (span.TotalHours == 24) {do ...}
abmv

19

다음을 시도하십시오

double hours = (b-a).TotalHours;

요일 차이를 제외하고 시차 만 원하는 경우 다음을 사용할 수 있습니다.

int hours = (b-a).Hours;

이 두 속성의 차이는 주로 시차가 1 일 이상일 때 나타납니다. Hours 속성은 두 날짜 간의 실제 시간 차이 만보고합니다. 따라서 두 날짜가 100 년 차이가 났지만 하루 중 같은 시간에 발생한 경우 시간은 0을 반환합니다. 그러나 TotalHours는 두 날짜 사이에 발생한 총 시간 (이 경우 876,000 시간)의 차이를 반환합니다.

다른 차이점은 TotalHours가 부분 시간을 반환한다는 것입니다. 이것은 당신이 원하는 것일 수도 있고 아닐 수도 있습니다. 그렇지 않은 경우 Math.Round에서 원하는대로 조정할 수 있습니다.


여전히 잘못되었습니다. TotalHours는 전체 및 부분 시간을 반환하는 두 배입니다.
Vilx-

질문에 대한 정답 인 그는 결과가 24가되기를 원합니다. 물론 그가 원한다면 TotalHours 자체를 아주 쉽게 반올림 할 수 있습니다.
James Avery

@James 내 대답은 정확히 24를 생성합니다. OP는 값을 특정 숫자 형식으로 지정하지 않았습니다.
JaredPar

1
@abmv : "OP"-원본 포스터. 이 경우, 당신.
Cerebrus

@Jared, 내가 당신과 동의한다는 것을 알고 있습니다. 나는 당신의 대답이 선택한 대답보다 더 나은 대답이라고 생각합니다.
James Avery




-1

이 방법을 사용하면 시간에 대한 시간차 b / w가 표시됩니다.

 private void HoursCalculator()
    {
        var t1 = txtfromtime.Text.Trim();
        var t2 = txttotime.Text.Trim();
        var Fromtime = t1.Substring(6);
        var Totime = t2.Substring(6);
        if (Fromtime == "M")
        {
             Fromtime = t1.Substring(5);
        }
        if (Totime == "M")
        {
            Totime = t2.Substring(5);
        }

        if (Fromtime=="PM" && Totime=="AM" )
        {
            var dt1 = DateTime.Parse("1900-01-01 " + txtfromtime.Text.Trim());
            var dt2 = DateTime.Parse("1900-01-02 " + txttotime.Text.Trim());
            var t = dt1.Subtract(dt2);
            //int temp = Convert.ToInt32(t.Hours);
            //temp = temp / 2;
            lblHours.Text =t.Hours.ToString() + ":" + t.Minutes.ToString();

        }
        else if (Fromtime == "AM" && Totime == "PM")
        {
            var dt1 = DateTime.Parse("1900-01-01 " + txtfromtime.Text.Trim());
            var dt2 = DateTime.Parse("1900-01-01 " + txttotime.Text.Trim());
            TimeSpan t = (dt2.Subtract(dt1));
            lblHours.Text = t.Hours.ToString() + ":" + t.Minutes.ToString();
        }
        else
        {
            var dt1 = DateTime.Parse("1900-01-01 " + txtfromtime.Text.Trim());
            var dt2 = DateTime.Parse("1900-01-01 " + txttotime.Text.Trim());
            TimeSpan t = (dt2.Subtract(dt1));
            lblHours.Text = t.Hours.ToString() + ":" + t.Minutes.ToString();
        }
    }

귀하의 필드 ID를 사용하십시오

var t14:00 AM 의 값을 캡처합니다.

이 코드가 누군가에게 도움이 될 수 있는지 확인하십시오.

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