【问题标题】:NSDate - Extracting TimeNSDate - 提取时间
【发布时间】:2011-08-24 15:39:57
【问题描述】:

问题

我有一个timestamp,我将其转换为NSDate。现在我需要提取时间。我已经成功提取了时间,但我唯一的问题是如果分钟为 0,它会显示“0”而不是“00”。所以 11:00 将显示为:“11:0”。其他一切正常,例如 11:30 正常。

代码

    NSDate *date = [NSDate dateWithTimeIntervalSince1970:[self.program.sd intValue]];
    NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
    [dateFormatter setDateFormat:@"HH:mm"];
    NSCalendar *calendar = [NSCalendar currentCalendar];
    NSDateComponents *components = [calendar components:(kCFCalendarUnitHour | kCFCalendarUnitMinute) fromDate:date];
    NSInteger hour = [components hour];
    NSInteger minute = [components minute];
    NSLog(@"%d:%d", hour, minute);

有什么建议吗?我做错了什么?有没有比我上面所做的更好的方法来同时提取小时和分钟?

谢谢!

【问题讨论】:

    标签: iphone objective-c cocoa-touch nsdate


    【解决方案1】:

    您是否恢复了正确的价值观?如果您所做的只是向用户显示时间,您应该使用NSDateFormatter 从日期对象创建一个字符串。

    NSDateFormatter *formatter = [[NSDateFormatter new] autorelease];
    [formatter setDateFormat:@"hh:mm"];
    NSString *timeString = [formatter stringFromDate:date];
    

    格式字符串的可能性记录在 UTS #35:区域设置数据标记语言Appendix F: Date Format Patterns

    【讨论】:

    • 这正是我想要的。为我节省了很多代码。我写了额外的代码,但我将另一个答案标记为正确,因为它回答了那个特定的问题(以防有人稍后搜索这个问题)。不过给你1分!谢谢!
    • +1 我给出了一个具体的答案,但你给出了一个更广泛的解决方案:)
    • 我为你 +1 @MByD,因为你回答了这个具体问题。
    【解决方案2】:

    你应该指定你想用零填充:

    NSLog(@"%02d:%02d", hour, minute);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-03-03
      • 2011-08-07
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多