我正在尝试将表示秒的字符串转换为具有小时分钟秒格式的字符串。输入可能看起来像305秒,我希望它显示5:05。我不能用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和大写S作为输入格式,但仍然没有得到正确的结果。
我很高兴知道我做错了什么,或者这种转换是不是用NSDateFormatter完成的。感谢。
答案 0 :(得分: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]);