2009-09-22 18 views
3

我將這種格式'00.000'中的小數小時值轉換爲小時和分鐘格式。所以'02 .500'將是'02:30',我也必須做到相反。將字符串轉換爲時間並返回

我建了一個測試,看看這將如何工作,

<% 
    TimeSpan tspan; 
    TimeSpan tspan2; 

    string TimeString; 
    string TimeString2; 
    string Converted; 
    double ConvTime; 
    for (int HH = 0; HH < 24; HH++) 
    { 
     for (int M1 = 0; M1 < 6; M1++) 
     { 
      for (int M2 = 0; M2 < 10; M2++) 
      { 
       TimeString = HH.ToString() + ":" + M1.ToString() + M2.ToString(); 

       // Convert Time String to Fractional Hours 
       tspan = TimeSpan.Parse(TimeString); 
       ConvTime = Convert.ToDouble(tspan.TotalHours); 
       Converted = String.Format("{0:00.000}", ConvTime); 

       // Convert Fractional Hour String to Time String 
       tspan2 = TimeSpan.FromHours(Convert.ToDouble(Converted)); 
       TimeString2 = string.Format("{0:D1}:{1:D2}", tspan2.Hours, tspan2.Minutes); 


       Response.Write(TimeString + " = "); 
       Response.Write(Converted + " = "); 
       Response.Write(TimeString2 + "<br>"); 
      } 
     } 
    }  
%> 

我遇到的問題是,當我轉換爲字符串,我失去了剩餘形成converstion,它拋出了價值轉換時背部。

這是前10秒的輸出。

0:00 = 00.000 = 0:00 
0:01 = 00.017 = 0:01 
0:02 = 00.033 = 0:01 
0:03 = 00.050 = 0:03 
0:04 = 00.067 = 0:04 
0:05 = 00.083 = 0:04 
0:06 = 00.100 = 0:06 
0:07 = 00.117 = 0:07 
0:08 = 00.133 = 0:07 
0:09 = 00.150 = 0:09 
0:10 = 00.167 = 0:10 

因爲你可以看到我開始的並不總是我最終的結果。

如何正確地將時間值字符串「HH:MM」轉換爲分數字符串「00.000」並再次正確返回。

感謝

編輯:

我想這一點,

TimeString = "02:02"; 
Converted = TimeSpan.Parse(TimeString).TotalHours.ToString("00.000"); 

tspan2 = TimeSpan.FromHours(Convert.ToDouble(Converted)); 
TimeString2 = string.Format("{0:D1}:{1:D2}", tspan2.Hours, tspan2.Minutes); 

,但我得到轉換= 「02.033」 和TimeString2 = 「2:01」。它應該等於「2:02」。當我強迫它達到「00.000」時,我想我正在放棄其餘部分。

回答

7

爲什麼你不使用DateTime.Parse?

7

將一個字符串轉換爲一個小時,使用:

string time = "1:30"; 
double hours = TimeSpan.Parse(time).TotalHours; // -> 1.5 

對於反向,你可以使用這個:

double hours = 1.5; 
string time = TimeSpan.FromHours(hours).ToString(); // -> "00:01:30" 
0
//Parse both strings to TimeSpan 
var ts = TimeSpan.FromHours(Double.Parse("02.500")); 
var ts2 = TimeSpan.Parse("02:30"); 

//Convert a TimeSpan to string format 
var firstFormat = ts.Hours.ToString.PadLeft(2, '0') 
        + ":" + ts.Minutes.ToString.PadLeft(2, '0'); 
//Result: 02:30 
var secondFormat = ts.TotalHours.ToString("00.000"); 
//Result: 02.500 
相關問題