【问题标题】:Conversion of Seconds with NSDateFormatter Returns Null使用 NSDateFormatter 转换秒返回 Null
【发布时间】:2013-05-28 04:57:58
【问题描述】:

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

【问题讨论】:

  • 没有接受三个位s的版本。 s 是一分钟内的秒数,因此只有 0 - 59 有意义。您可以使用 A 内达到 毫秒

标签: ios nsdateformatter


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-11-23
    • 2012-12-18
    • 2011-10-27
    • 1970-01-01
    • 1970-01-01
    • 2013-12-28
    相关资源
    最近更新 更多