[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;