问题
我有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);
有什么建议吗?我做错了什么?是否有更好的方法同时提取小时和分钟,而不是我上面所做的?
谢谢!
答案 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);