2008-09-25 5 views
1

데이터베이스에 저장 한 시간 간격을 2 번 계산하고 싶습니다. 문자 그대로 두 값 사이의 시간 길이를 알고 싶습니다.C#에서 누적 시간을 어떻게 계산합니까?

14시 10분 20초에서 10시 5분 15초까지 = 2시 5분 5초

그래서 결과는 2시 5분 5초이 될 것입니다.

어떻게 C#을 사용하여이 작업을 수행 할 수 있습니까?

14:10:20은 내 데이터베이스에 저장 한 형식입니다.

답변

7

두 시간 값을 TimeSpan 변수로 읽은 다음 큰 TimeSpan 변수에서 .Subtract()을 수행하여 TimeSpan 결과를 얻습니다.

예. TimeSpan difference = t1.Subtract(t2);.

+1

t1 - t2는 동일하게 작동하며 눈이 더 쉬울 것입니다. –

+0

나는 과잉을 좋아한다 –

0

DateTime 개체는 "-"연산자를 지원하므로 시간을 읽고 그러한 개체로 시간을 빼기 만하면됩니다. 테스트하려면이 체크 아웃 :

DateTime then = DateTime.Now; 
Thread.Sleep(500); 
DateTime now = DateTime.Now; 
TimeSpan time = now - then; 
MessageBox.Show(time.ToString()); 
3

첫 번째 단계는 .NET DateTime 구조체로 데이터베이스에 저장된 timevalues를 얻을 수있을 것입니다.

데이터베이스에 SQL-DateTime 값으로 저장 한 경우 DateTime으로 직접 가져올 수 있습니다.

SQLCommand getTimeCommand = new SQLCommand("SELECT time FROM table", dbConnection); 
SQLDataReader myReader = getTimeCommand.ExecuteReader(); 
while (myReader.Read()) 
{ 
    DateTime time = myReader.GetDateTime(0); 
} 
myReader.Close(); 

구현 내용이 다를 수 있습니다. MSDN 라이브러리의 ADO.NET 설명서를 참조하십시오.

당신은 이미 당신이 정적 메서드

DateTime.Parse 

또는 ParseExact를 사용하는 당신이해야 할 수도 있습니다 귀하의 경우에는

DateTime.ParseExact 

를 사용하여 DateTime에 문자열을 구문 분석 할 수있는 시간을 나타내는 문자열을 가지고 있다면, 이 문자열은 문자열을 읽는 방법을 정의하는 형식 문자열로 제공됩니다. 예제는 MSDN 라이브러리에서 찾아야합니다.

.NET의 지속 시간은 TimeSpan 구조체 내에 저장됩니다. 날짜 시간까지의 경과 시간을 얻는 것은 쉽다 :

DateTime time1, time2; //filled with your timevalues from the db 
TimeSpan elapsed = d2 - d1; 

elapsed 이제 두 DateTimes 사이의 시간 범위를 포함한다. 구조체가 TimeSpan에 액세스하는 데 필요한 여러 멤버가 있습니다. 필요한 항목을 찾으려면 MSDN-Library를 살펴보십시오.

+0

멋지게 선물! – xan

관련 문제