2011-08-25 94 views
0

我試圖將時間格式(hh:mm:ss)轉換爲此特殊時間格式(hhmmt)?將簡單時間格式轉換爲特殊時間格式(hhmmt)

特殊時間格式(STF)是格式爲[hhmmt]的5位整數值,其中hh是小時,mm是分鐘,t是一分鐘的十分之一。

例如,4時41分05秒將轉換爲4411

我不知道如何將秒值(05)轉換到一分鐘的十分之一(1)。

編輯:

我已經納入下面Adithya的建議,以秒轉換到一分鐘的十分之一,但我仍然堅持。

這裏是我當前的代碼:

String[] timeInt = time.split(":"); 
String hours = timeInt[0]; 
String minutes = timeInt[1]; 
double seconds = Double.parseDouble(timeInt[2]); 

int t = (int) Math.round(seconds/6); 

if (t>=10) { 
    int min = Integer.parseInt(minutes); 
    // min+=1; 
    t = 0; 
} 

String stf=""; 
stf += hours; 
stf += minutes; 
stf += String.valueOf(t); 

int stf2 = Integer.parseInt(stf); 
return stf2; 

我使用一個字符串來存儲分鐘值,但就很難來增加它,因爲它是一個字符串,而不是一個整數。但是當計算「t」(十分鐘)時,如果它超過10,我必須加1分鐘。如果我再次使用parseInt,它將再次排除分鐘前的0。

如何保留前導零並仍然增加分鐘數?

謝謝。

回答

0

我猜測,它的秒值,相比之下,是一分鐘的十分之一,這是6秒。所以公式對於t將是

t= seconds/6 //rounded off to nearest integer 

這是有意義的,因爲這值始終爲0和9之間,如秒的範圍從0到59,所以它總是一個單一的數字

對於示例

t = 5/6 = 0.833 = rounded off to 1 
+0

thanks。這很有幫助。 – Lisa

0

請注意分區中的6.0f--這有助於避免INT截斷。

string FormatSpecialTime(string time) 
{ 
    if (time.Length != 8) throw YourException(); 

    int HH, mm, SS, t; 
    if (!int.TryParse(time.Substring(0, 2), out HH)) HH = 0; 
    if (!int.TryParse(time.Substring(0, 2), out mm)) mm = 0; 
    if (!int.TryParse(time.Substring(0, 2), out SS)) SS = 0; 

    t = (int) Math.Round(SS/6.0f); 

    if (t >= 10) 
    { 
     mm++; 
     t = 0; 
    } 
    if (mm >= 60) 
    { 
     HH += mm/60; 
     mm = mm % 60; 
    } 

    return HH.ToString() + (mm > 10 ? mm.ToString() : @"0" + mm) + t; 
}