2013-05-27 71 views
0

我想將表示秒的字符串轉換爲帶小時分鐘秒格式的字符串。輸入可能看起來像305秒,我希望它顯示5:05。我不應該使用NSDateFormatter來做到這一點嗎?我已經嘗試了以下幾種變體,但輸出始終爲空。使用NSDateFormatter轉換秒數返回空

NSDateFormatter *inputFormatter = [[NSDateFormatter alloc] init]; 
[inputFormatter setDateFormat:@"s"]; 

NSDateFormatter *outputFormatter = [[NSDateFormatter alloc] init]; 
[outputFormatter setDateFormat:@"hh:mm:ss"]; 

NSString *seconds = @"305"; 
NSDate *myDate = [inputFormatter dateFromString:seconds]; 
NSString *twelveHourTime = [outputFormatter stringFromDate:myDate]; 
NSLog(@"twelve hour time: %@", twelveHourTime); 

我看了很多其他NSDate帖子,很多問題都與不正確的格式有關。最好的我可以從NSDate格式指南得知單個小寫字母s是正確的輸入秒數。也就是說,我還嘗試了多個小寫字母和大寫字母S作爲輸入格式,並且仍然沒有得到正確的結果。

我很感激知道我做錯了什麼,或者如果這種類型的轉換不是用NSDateFormatter完成的。謝謝。

+0

沒有版本接受*爲三大*的數字。秒是一分鐘內的秒數,所以只有0-59是有意義的。你可以通過使用A – borrrden

回答

3

您可以使用NSDateComponents來實現這一目標:

NSString *seconds = @"305"; 

NSDateFormatter *outputFormatter = [[NSDateFormatter alloc] init]; 
[outputFormatter setDateFormat:@"HH:mm:ss"]; 

NSDateComponents *dateComponents = [[NSDateComponents alloc] init]; 
dateComponents.second = [seconds integerValue]; 

NSDate *date = [[NSCalendar autoupdatingCurrentCalendar] dateFromComponents:dateComponents]; 

NSLog(@"twelve hour time: %@", [outputFormatter stringFromDate:date]); 
+0

達到*毫秒*在*天內*謝謝保羅! – DenVog