2009-03-03 6 views
5

나는 분 값을 가지고 내가이 캐릭터를 갖고 싶어 얼마나 많은 시간과 다른 하나는 분, 다른, 예를 들어, 값 = 2
문자열 분 = 1워크 아웃 분, 시간

값 - 58 분

문자열 시간 = 0
문자열 분 = 58

,745,

C#에서 어떻게 해결할 수 있습니까?

답변

34
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 반환 모든 시간의 분수 값이므로 문자열로 변환하기 전에 그것을 정수로 잘라야합니다.

+0

분을 0으로 채 웁니다. ToString ("00")을 추가하면이를 수정해야합니다. – Coincoin

+0

@Coincoin : OP의 예를 121 분간보십시오. 패딩은 필요하지 않습니다. –

+0

내 실수. 그것을 지적 주셔서 감사합니다. – Coincoin

2
int value = 121; 
int hours = value/60; // 2 
int minutes = value % 60; // 1 

string strHours = hours.ToString(); 
string strMinutes = minutes.ToString(); 
+0

TimeSpan 사용은 OO 방식이지만 짧고 멋집니다. – spoulson

+0

Reflector를 사용하여 TimeSpan을 살펴 보았습니다. 모든 결과는 ticked milliseconds의 곱셈으로 계산됩니다. 내 방법이 더 빠를 것이라고 믿습니다! – abatishchev

8

시간 간격 구조체와 해당 Parse 메서드를 사용하십시오. 당신이 문자열 값을 요구하기 때문에

+0

그는 잠시 시간을 갖고 그것을 다른 방법으로 문자열로 변환하고 싶다고 말했습니다. – froh42

+0

시간은 아직 갈 길이 멀다. –

1
int value = 121; 
int hours = value/60; 
int minutes = value % 60; 
+0

왜 downvote? 이것은 총 분 값에서 시간/분을 얻는 완벽하게 유효한 방법이며, .ToString()의 – CraigTP

+0

+1에 대한 +1을 제외하고는 abatishchev의 답변과 동일합니다. -1 – Davy8

+0

은 -1이었습니다. :) –

0
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); 
+0

왜 TimeSpan.Minutes를 사용하지 않습니까? 이 경우 121을 반환하는 TimeSpan.TotalMinutes와 반대로이 경우 1을 반환합니다. –

+0

실제로 TotalMinutes는 121.3523을 반환 할 수있는 double 또는 날짜의 차이를 나타내는 숫자를 반환합니다. 예, Int32로 캐스팅하는 경우 121로 캐스트됩니다. TimeSpam.Minutes 테스트하지 않았습니다. 그러나 "121"대신 "1"을 반환하면 그 것입니다. – eduncan911

관련 문제