2012-05-03 66 views
0

我將收到一串分鐘,我想將其轉換爲花費的總時間。將字符串分鐘轉換爲小時

如果是90分鐘我想將它轉換爲1小時30分鐘。

如果它是150分鐘,我希望它轉換爲2小時30分鐘。

這是我到目前爲止有:

DataTable data = GeneralFunctions.GetData(query); 
object sumObject; 
sumObject = data.Compute("Sum(Minutes_Spent)", ""); 
if (reportType == 1) 
{ 
    RepeaterPCBillable.DataSource = data; 
    RepeaterPCBillable.DataBind(); 
    LabelPCBillable.Text = sumObject.ToString(); 
} 
else 

我不知道是否有一些內置的功能時,將產生我需要的結果,或者如果我需要做某種類型的劃分。

回答

3

沒有什麼內置的。

你需要編寫自己的分析例程用於您的字符串。

實例C#:

// assumes input is valid for integer parsing 
int totalMinutes = int.Parse(inputString); 
int hours = totalMinuts/60; 
int minutes = totalMinutes % 60; 
+0

我總是無法理解的#VS 2.0中格式化......不管我有多少文章讀... :( –

+0

@RoyiNamir - 即使[MSDN](http://msdn.microsoft.com/en-us/library/0c899ak8.aspx)? – Oded

+0

這比其他人建議的TimeSpan有什麼優勢嗎? –

2

您可以使用TimeSpan.FromMinutes,然後從中檢索小時和分鐘。

var span = TimeSpan.FromMinutes(int.Parse(inputString)); 
var hours = span.Hours; 
var minutes = span.Minutes; 
+0

沒有。 'FromMinutes'需要一個'double'輸入... – Oded

+0

@Oded不會C#自動將我的'int'轉換爲'double'嗎? – dasblinkenlight

+0

@Oded,It works, – Habib

0

嗯,這裏是一個通用算法:

int hours=string_minutes/60; 
int minutes=string_minutes%60; 

基本上第一操作給你智商,然後第二個給你餘/

+0

順便說一下,請將string_minutes轉換爲Int –

1

沒有什麼內置的,但它的不難做到。讓我們一步一步來做。這是我們的例子中輸入:

var input = "130 minutes"; 

現在我們使用正則表達式來提取的minutes前面的數字:

var match = Regex.Match(input, @"^(\d+) minutes$"); 
if (!match.Success) 
    throw new Exception("Invalid input format"); 

然後,我們把與分鐘串入一個整數:

var minutes = int.Parse(match.Groups[1].Value); // now contains 130 

接下來,我們使用整數除法和模運算分開小時和分鐘:

var hours = minutes/60; 
minutes = minutes % 60; 

而且,最後,我們可以再次格式化結果轉換成字符串:

var result = String.Format("{0} hours and {1} minutes", hours, minutes); // 2 hours and 10 minutes 
相關問題