0

秒を表す文字列を時分秒形式の文字列に変換しようとしています。入力は 305 秒のように見えるかもしれませんが、5:05 を表示したいと思います。NSDateFormatter を使用してこれを行うことはできませんか? 以下でいくつかのバリエーションを試しましたが、出力は常に null です。

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 と大文字の S も試しましたが、正しい結果が得られませんでした。

私が間違っていること、またはこのタイプの変換がNSDateFormatterで行われることを意図していないかどうかを知っていただければ幸いです。ありがとう。

4

1 に答える 1

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]);
于 2013-05-27T20:57:58.143 に答える