NSDate - 提取时间

时间:2011-08-24 15:39:58

标签: iphone objective-c cocoa-touch nsdate

问题

我有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);

有什么建议吗?我做错了什么?是否有更好的方法同时提取小时和分钟,而不是我上面所做的?

谢谢!

2 个答案:

答案 0 :(得分:12)

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

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

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

答案 1 :(得分:2)

您应该指定要用零填充:

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