2012-04-19 2 views
0

나는 여러 DateTimes 목록을 가지고 있습니다. DateTime은 실제로 DateTime으로 변환되는 HH : mm : ss 형식의 문자열입니다. 은 "100 표기 (분)값을 백분율로 계산하고이 값을 기준으로 다른 값을 지정하십시오.

//t is a DateTime 
Double totalMin = TimeSpan.Parse(t.ToString()).TotalMinutes; 

가장 큰 값이 목록에서

은 내가

나는 다음과 같이 전체 분을 계산 (분) 가장 큰 값을 검색 % "값. 목록의 최대 값을 이미 계산했습니다.

의미이 값을 기반으로 목록의 다른 모든 값 (분 단위)이 계산됩니다. 다른 낮은 값은이 최대 값에 대해 확장되어야합니다.

막대 차트에서 사용됩니다. 따라서 가장 큰 값은 가장 낮은 값을 따르는 공간을 차지합니다.

정확히 어떻게 할 수 있습니까?

감사합니다. PeterP.

+2

는't1.TimeOfDay.TotalMinutes'는 것이 올바른 방법 – V4Vendetta

+0

비율 = totalMin/100 * someMin –

+0

경우 시작 지점은 자정이되면)) V4Vendetta @ – Samich

답변

3

백분율을 계산하는 방법을 알고 싶습니까? 현재를 최대로 나누고 100으로 곱하십시오. 그러면 원하는 비율 (예 : "20 %", "20.2 %"...)을 포맷 할 수 있습니다.

Double max = 200d; 
Double current = 23d; 

Double percent = current/max * 100; 
0

당신은 Timespan을 분석하고 정말 필요하지 않은 문자열로 DateTime 변환된다.

는 두 날짜 시간의 사이의 시간의 일부 단위에서이

List<DateTime> lstdt = new List<DateTime>() { 
       new DateTime(2010,5,5,1,10,0), 
       new DateTime(2011,5,5,2,10,0), 
       new DateTime(2010,8,5,1,10,0), 
       new DateTime(2010,5,5,1,10,0), 
       new DateTime(2011,11,5,1,10,0), 
       new DateTime(2010,12,5,1,10,0), 
      };    

double maxval = lstdt.Max(c => c.TimeOfDay.TotalMinutes); 
List<double> lstpercent = lstdt.Select(d1 => d1.TimeOfDay.TotalMinutes/maxval *100.00).ToList<double>(); 
1

시간 범위 같은 차이는이다, 의미합니까. 당신은 DateTime을 구문 분석하고 있습니다.

Double UhOh = TimeSpan.Parse(DateTime.Now.ToString()).TotalMinutes; 

결과 : 당신은 FormatException을 얻을거야 차이를 찾기 위해 또 다른 날짜 시간 : 이제

System.FormatException: "Input string was not in a correct format." 

귀하의 질문에 대답하기를, 당신은 데이터의 또 다른 조각을 필요 해요 그 두 지점 사이에 분 단위로 표시됩니다.

의 사용하려는 가정 해 봅시다 :

DateTime.Now 

이 작동합니다 : 도움이

DateTime t = new DateTime(2012,4,19,0,0,0); 
TimeSpan ts = DateTime.Now - t; 
Double mins = ts.TotalMinutes; 

희망을. (:

+0

그들은 원래 DateTime 객체가 아니기 때문에 hh : mm : ss 형식의 문자열 (Stopwatch를 사용하여 채워짐)을 문자열로 유지하고 시간 분을 사용하여 분 단위로 검색하는 것이 좋지 않습니까? 감사. – PeterP

+0

오, 알았어! 방금 내 의견을보고 DateTime이라고 생각했습니다 : // t는 DateTime (: – darin

관련 문제