[c#] 두 시간 사이에 몇 분이 있는지 계산

내 응용 프로그램에 시작 및 종료 시간을 보유하는 datagridview가 있습니다. 이 두 시간 사이의 분 수를 계산하고 싶습니다. 지금까지 :

var varFinish = tsTable.Rows[intCellRow]["Finish Time"];
TimeSpan varTime = (DateTime)varFinish - (DateTime)varValue;
int intMinutes = TimeSpan.FromMinutes(varTime);

그러나 마지막 줄은 Timespan 생성자에 대해 잘못된 인수를 사용하고 있기 때문에 컴파일되지 않습니다. 두 시간 사이의 분 수를 계산하는 방법에 대해 꽤 많이 연구했지만 약간의 벽돌 벽에 부딪 혔습니다. 누군가 내 목표를 달성하는 가장 좋은 방법에 대해 조언 해 주시겠습니까?

편집하다/

이제 내 코드는 다음과 같습니다.

var varFinish = tsTable.Rows[intCellRow]["Finish Time"];
TimeSpan varTime = (DateTime)varFinish - (DateTime)varValue;
int intMinutes = (int)varTime.TotalMinutes;

그러나 두 번째 줄에서 잘못된 캐스트가 발생합니다. varFinish와 varValue는 모두 시간입니다 (예 : 10:00 및 8:00). 그렇다면 왜 DateTime을 입력하지 않는지 확실하지 않습니까?



답변

이 시도

DateTime startTime = varValue
DateTime endTime = varTime

TimeSpan span = endTime.Subtract ( startTime );
Console.WriteLine( "Time Difference (minutes): " + span.TotalMinutes );

편집 : ‘span.Minutes’를 시도하는 경우 시간 범위 [0 ~ 59]의 분만 반환하고이 간격에서 모든 분의 합계를 반환하려면 ‘span.TotalMinutes’를 사용합니다.


답변

double minutes = varTime.TotalMinutes;
int minutesRounded = (int)Math.Round(varTime.TotalMinutes);

TimeSpan.TotalMinutes :이 인스턴스가 나타내는 총 시간 (분)입니다.


답변

질문 코드에서 TimeSpan.FromMinutes잘못 사용하고 있습니다. 다음 메서드 서명을 제공하는 TimeSpan.FromMinutes에 대한 MSDN 설명서 를 참조하십시오 .

public static TimeSpan FromMinutes(double value)

따라서 다음 코드는 컴파일되지 않습니다.

var intMinutes = TimeSpan.FromMinutes(varTime); // won't compile

대신 TimeSpan.TotalMinutes 속성을 사용하여이 산술을 수행 할 수 있습니다 . 예를 들면 :

TimeSpan varTime = (DateTime)varFinish - (DateTime)varValue;
double fractionalMinutes = varTime.TotalMinutes;
int wholeMinutes = (int)fractionalMinutes;


답변

다음 TotalMinutes과 같이 속성 을 쿼리하면 됩니다.varTime.TotalMinutes


답변

endTime과 startTime의 차이 가 60 Minutes 이상 이면 문 : endTime.Subtract(startTime).Minutes;은 항상을 반환 (minutesDifference % 60)합니다. 분명히 우리가 몇 분 (여기서는 몇 시간이 아님)에 대해서만 이야기 할 때 바람직하지 않습니다.
다음은 원하는 경우 몇 가지 방법입니다 total number of minutes(다른 typecast에서).

// Default value that is returned is of type *double* 
double double_minutes = endTime.Subtract(startTime).TotalMinutes;
int integer_minutes = (int)endTime.Subtract(startTime).TotalMinutes;
long long_minutes = (long)endTime.Subtract(startTime).TotalMinutes;
string string_minutes = (string)endTime.Subtract(startTime).TotalMinutes;


답변