2011-08-24 44 views
2

問題的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); 

有什麼建議?我做錯了什麼?有沒有更好的方法來同時提取小時和分鐘,而不是上面所做的?

謝謝!

回答

12

您是否獲得了正確的價值觀回來?如果您只是在向用戶顯示時間,則應使用NSDateFormatter從日期對象創建一個字符串。

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

可能性格式字符串都記錄在UTS#35:區域設置數據標記語言Appendix F: Date Format Patterns

+0

這正是我想要的。爲我節省了很多代碼。我編寫了額外的代碼,但我將另一個答案標記爲正確,因爲它回答了特定的問題(以防某人稍後再搜索此問題)。儘管給你一個!謝謝! – darksky

+0

+1我給了一個具體的答案,但你給了更廣泛的解決方案:) – MByD

+0

我+1了你@MByD,因爲你回答了這個具體的問題。 – darksky

2

您應指定要墊零:

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