NSDate - 提取时间

dar*_*sky 2 iphone cocoa-touch objective-c 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);
Run Code Online (Sandbox Code Playgroud)

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

谢谢!

Cam*_*ert 12

你得到了正确的价值观吗?如果你正在做的只是向用户显示时间,你应该使用NSDateFormatter从日期对象创建一个字符串.

NSDateFormatter *formatter = [[NSDateFormatter new] autorelease];
[formatter setDateFormat:@"hh:mm"];
NSString *timeString = [formatter stringFromDate:date];
Run Code Online (Sandbox Code Playgroud)

格式字符串的可能性记录在UTS#35:区域设置数据标记语言附录F:日期格式模式中.