UIDatePicker
入力と実世界の時間との時差を のIBOutlet
ラベルに表示しようとしていますdd:hh:mm:ss
。正しい情報をNSLog
表示していますが、同じデータをラベルに表示するのに苦労しています。現在のところ、UILabel には何も表示されませんが、正しいデータは NSLog にあります。私が変わるとき
[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);
}