2016-03-23 26 views
1

TimeSpan.TotalHours 24,75 saatten ediniyorum. Bunu tam ve yarım saat değil (= 24) artı dakikayı (0,75saat = 45 dakika) almak için bunu nasıl değiştirebilirim? Sonuç, saat = 24 ve dakika olmalıdır. = 45Timespan Totalhours ve Dakikalarından Çıkarın

Dizeye dönüştürmeyi ve alt dizeyi yapmayı denedim ancak bundan daha iyi bir yol olup olmadığını öğrenmek istiyorum.

string test = Reststunden.TotalHours.ToString().Substring(Reststunden.TotalHours.ToString().IndexOf(","),3).Replace(",", ""); 
double Minuten = Convert.ToInt16(test) * 0.6; 

cevap

4

ne dersiniz: hatta

var ts = TimeSpan.FromHours(24.75); 
var h = System.Math.Floor(ts.TotalHours); 
var m = (ts.TotalHours - h) * 60; 

Veya:

var h = (int) (ts.TotalMinutes/60); 
var m = ts.TotalMinutes % 60; 
+0

saatin etrafında yuvarlanıyor, onlara ihtiyacım var –

+0

Bu oldukça iyi çalışıyor ve uygulanması kolaydır. –

+0

Hala Skeet'in cevabını daha çok seviyorum :-) – lesscode

3

Peki sadece toplam saat yuvarlak uygun döküm ve ardından Minutes özelliğini kullanın ölçütü:

int hours = (int) timeSpan.TotalHours; 
int minutes = timeSpan.Minutes; 

Hiç olumsuz bir TimeSpan olacak, size sonuçları ne istediğini düşünmek gerekir Uygun testler yapmak ve eklemek için - yukarıdaki basit kodla istediğinizi yapmazsınız.

+2

neden kullanılmalı TotalHours yerine saatleri? –

+2

Çünkü TotalHours 49 olabilir. Bu durumda saat 1 olur. Yok hayır? @Jon Skeet'i gördüğümde, sorunun cevabını veren bir soruya cevap verin. Kudos, dostum. –

+0

@o_weisman: Max'in tam olarak ne dediği tam olarak. 'Hours' özelliği için dokümanlar okuyun ve OP'nin isteği ile karşılaştırın. –