0
我試圖顯示UIDatePicker
輸入和真實世界時間的IBOutlet
標籤dd:hh:mm:ss
形式的時差。我有我的NSLog
顯示正確的信息,但我很難得到相同的數據顯示在我的標籤。 截至目前,我的UILabel中沒有顯示任何內容,但正確的數據在NSLog中。 當我改變stringWithFormat,dateFromString,&stringFromDate不工作
[self.formatter stringFromDate:timeDif];
到
[self.formatter stringFromDate:selected];
顯示當前的DatePicker選擇時間(這是不是我想要的),但仍NSLog的正確顯示的時間差。我知道這是我的格式化序列或某事有什麼問題,但我一直無法知道我哪裏出錯了。
- (IBAction)displayDate:(id)sender {
NSDate *timeDif = [self.formatter dateFromString:self.string];
NSDate *todaysDate = [NSDate date];
NSDate *selected = [picker date];
self.formatter = [NSDateFormatter new];
[self.formatter setDateFormat:@"dd:hh:mm:ss"];
[picker setDate:selected animated:YES];
self.label.text = [self.formatter stringFromDate:timeDif];
NSDateComponents *dateComponents = [[NSDateComponents alloc] init];
NSCalendar *gregorian = [[NSCalendar alloc]
initWithCalendarIdentifier:NSGregorianCalendar];
NSUInteger unitFlags = NSDayCalendarUnit | NSMinuteCalendarUnit | NSHourCalendarUnit | NSSecondCalendarUnit;
NSDateComponents *dateComparisonComponents = [gregorian components:unitFlags
fromDate:todaysDate
toDate:selected
options:NSWrapCalendarComponents];
NSInteger days = [dateComparisonComponents day];
NSInteger hours = [dateComparisonComponents hour];
NSInteger minutes = [dateComparisonComponents minute];
NSInteger seconds = [dateComparisonComponents second];
dateComponents.day = days;
dateComponents.hour = hours;
dateComponents.minute = minutes;
dateComponents.second = seconds;
self.string = [NSString stringWithFormat:@"%1d:%1d:%1d:%1d",
dateComparisonComponents.day,
dateComparisonComponents.hour,
dateComparisonComponents.minute,
dateComparisonComponents.second];
NSLog(@"%1d:%1d:%1d:%1d",
dateComparisonComponents.day,
dateComparisonComponents.hour,
dateComparisonComponents.minute,
dateComparisonComponents.second);
}
神聖的廢話!這使得更有意義!我非常新,非常自學,因此向我展示了真正幫助我分析代碼並瞭解如何簡化其中所有組件和函數的工作以獲得相同結果。 –
順便說一句 - 我只是做了一個小小的更新。看看新的字符串格式。這會給你小時,分鐘和秒,所以它們總是2位數字,如果需要的話前導零。 – rmaddy
我確實需要這些,謝謝!但是當我更新我的代碼時,我得到了10個前導零。 –