我正在尝试将代表秒的字符串转换为小时,分钟,秒格式的字符串。输入可能看起来像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完成这种类型的转换,我将不胜感激。谢谢。

最佳答案

您可以使用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]);

关于ios - 使用NSDateFormatter进行的秒转换返回Null,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/16780369/

10-10 01:14