나는 분 값을 가지고 내가이 캐릭터를 갖고 싶어 얼마나 많은 시간과 다른 하나는 분, 다른, 예를 들어, 값 = 2
문자열 분 = 1워크 아웃 분, 시간
값 - 58 분
문자열 시간 = 0
문자열 분 = 58
C#에서 어떻게 해결할 수 있습니까?
나는 분 값을 가지고 내가이 캐릭터를 갖고 싶어 얼마나 많은 시간과 다른 하나는 분, 다른, 예를 들어, 값 = 2
문자열 분 = 1워크 아웃 분, 시간
값 - 58 분
문자열 시간 = 0
문자열 분 = 58
C#에서 어떻게 해결할 수 있습니까?
var span = System.TimeSpan.FromMinutes(121);
var hours = ((int)span.TotalHours).ToString();
var minutes = span.Minutes.ToString();
있으며, toString()이
TotalHours이 시간 범위에서 전체 시간, 그들은 이상 (24) (이하 "시간"반면 필드가 될 수 있습니다 ...입니다 최대 24 개)
아, 두 번째 생각 : 왜 TimeSpan을 사용하고 직접 계산하지 않습니까? TimeSpan은 이미 Microsoft에서 테스트 한 &으로 디버깅 되었기 때문에 정신적으로 계산하지 않아도 쉽게 확인할 수있는 코드를보고 멋진 솔루션을 얻을 수 있습니다. (초 단위로 입력을 가지고 TimeSpan.FromSeconds()를 사용하여 일 원하는 span.TotalDays를 사용 ...?.?)
업데이트 :
난 그냥 내 대답에서 실수가 발견 : TotalHours 반환 모든 시간의 분수 값이므로 문자열로 변환하기 전에 그것을 정수로 잘라야합니다.
int value = 121;
int hours = value/60; // 2
int minutes = value % 60; // 1
string strHours = hours.ToString();
string strMinutes = minutes.ToString();
TimeSpan 사용은 OO 방식이지만 짧고 멋집니다. – spoulson
Reflector를 사용하여 TimeSpan을 살펴 보았습니다. 모든 결과는 ticked milliseconds의 곱셈으로 계산됩니다. 내 방법이 더 빠를 것이라고 믿습니다! – abatishchev
int value = 121;
TimeSpan timeSpan = TimeSpan.FromMinutes(value);
// gives you the rounded down value of 2
int hours = timeSpan.Hours;
// gives you the minutes left of the hour
int minutes = value - (hours * 60);
왜 TimeSpan.Minutes를 사용하지 않습니까? 이 경우 121을 반환하는 TimeSpan.TotalMinutes와 반대로이 경우 1을 반환합니다. –
실제로 TotalMinutes는 121.3523을 반환 할 수있는 double 또는 날짜의 차이를 나타내는 숫자를 반환합니다. 예, Int32로 캐스팅하는 경우 121로 캐스트됩니다. TimeSpam.Minutes 테스트하지 않았습니다. 그러나 "121"대신 "1"을 반환하면 그 것입니다. – eduncan911
분을 0으로 채 웁니다. ToString ("00")을 추가하면이를 수정해야합니다. – Coincoin
@Coincoin : OP의 예를 121 분간보십시오. 패딩은 필요하지 않습니다. –
내 실수. 그것을 지적 주셔서 감사합니다. – Coincoin