[C#] 두 날짜 시간 값의 차이를 시간 단위로 표시

데이터베이스에서 두 개의 날짜 시간 값을 검색 중입니다. 값이 검색되면 두 값의 차이가 필요합니다. 이를 위해 두 날짜 값의 차이를 저장하는 시간 범위 변수를 만듭니다.

TimeSpan? variable = datevalue1 - datevalue2;

이제 Timespan 변수에 저장된 차이를 시간 수로 표시해야합니다. TimeSpan.TotalHours를 언급 했지만 어떤 이유로 똑같이 적용 할 수 없습니다. 어떻게합니까? MVC 프로젝트에서 C #을 사용하고 있습니다. 차이 값을 시간 단위로 간단히 표시해야합니까?

편집 : 시간 범위가 nullable이므로 total hours 속성을 사용할 수 없습니다. 이제 TimeSpanVal.Value.TotalHours를 수행하여 사용할 수 있습니다 .



답변

나는 nullable 인TimeSpan a TimeSpan?를 선언 하지 않았기 때문에 혼란 스럽다고 생각합니다 . 널 입력이 필요하지 않은 물음표를 제거하거나을 사용하십시오 . TimeSpanvariable.Value.TotalHours


답변

당신은 또한보고 싶어 할 수 있습니다

var hours = (datevalue1 - datevalue2).TotalHours;


답변

이 샘플에서는 현재 시간과 현재 시간에 75 초가 추가 된 두 개의 datetime 객체를 만듭니다. 그런 다음 두 번째 DateTime 객체에서 .Subtract () 메서드를 호출합니다. TimeSpan 객체를 반환합니다. TimeSpan 객체를 가져 오면 TimeSpan의 속성을 사용하여 실제시, 분 및 초를 얻을 수 있습니다.

DateTime startTime = DateTime.Now;

 DateTime endTime = DateTime.Now.AddSeconds( 75 );

 TimeSpan span = endTime.Subtract ( startTime );
 Console.WriteLine( "Time Difference (seconds): " + span.Seconds );
 Console.WriteLine( "Time Difference (minutes): " + span.Minutes );
 Console.WriteLine( "Time Difference (hours): " + span.Hours );
 Console.WriteLine( "Time Difference (days): " + span.Days );

결과:

Time Difference (seconds): 15
Time Difference (minutes): 1
Time Difference (hours): 0
Time Difference (days): 0


답변

당신이 사용하는 이유가 Nullable있습니까?

당신이 사용하려면 Nullable다음을 쓸 수 있습니다 variable.Value.TotalHours.

또는 다음과 같이 쓸 수도 있습니다 (datevalue1 - datevalue2).TotalHours..


답변

C #에서 두 날짜를 빼는 또 다른 예는 다음과 같습니다.

if ( DateTime.Now.Subtract(Convert.ToDateTime(objDateValueFromDatabase.CreatedOn)).TotalHours > 24 ) 
{ 
... 
} 


답변

직원 급여 시간 또는 기타 정밀 요구 사항에 대한보다 정확한 방법 : :

decimal DeterminePreciseHours(DateTime startTimestamp, DateTime stopTimestamp)
{
    var span = (stopTimestamp - startTimestamp).Value;
    decimal total = (decimal)span.TotalMilliseconds / 60 / 60 / 1000;
    return Math.Round(total, PRECISION_CONSTANT);
}

https://dotnetfiddle.net/tVIoVJ


답변

var startTime = new TimeSpan(6, 0, 0); // 6:00 AM
var endTime = new TimeSpan(5, 30, 0); // 5:30 AM 
var hours24 = new TimeSpan(24, 0, 0);
var difference = endTime.Subtract(startTime); // (-00:30:00)
difference = (difference.Duration() != difference) ? hours24.Subtract(difference.Duration()) : difference; // (23:30:00)

서로 다른 두 날짜를 비교하면 날짜 간 차이를 추가 할 수도 있습니다

new TimeSpan(24 * days, 0, 0)