ここの初心者は、学習目的で提供された「Date Cell」サンプルコードをりんごに変更しようとしていますが、日付の書式設定に本当に問題があります。行 1 (datePickerModeDateAndTime)、行 2 (pickerModeDate)、行 3 (pickerModeTime) に 3 つの個別の datePicker を持つ tableView があります。現在、ログに記録された最初のピッカー (dateAndTime) から値を取得する作業を行っているところなので、後でアクセスできます。選択した日付を「2013 年 9 月 20 日午後 12 時 12 分」の形式で tableView セルの詳細に表示します。詳細の値を取得し、タイマーを設定できるように、「NSDate 日付」と選択した時刻の差を DD:HH:MM:SS の残りのアプリ ドキュメント ディレクトリに書き込もうとしています。選択した日付/時刻までカウントダウンを開始し、タイマーのカウントを UILabel に表示する別のビュー。ピッカーが最初に画面にロードされたときに「2013-09-20 18:12:33 + 0000」としてログに日付を書き込んでいますが、コンポーネントが変更された後、ログは「0:00:00:-10」を読み取ります。そのため、部分的にやりたいことを実行しましたが、適切な日付を取得することに成功していません。ありがとう!
if(self.datePickerIndexPath.row == 1){
targetedDatePicker.datePickerMode = UIDatePickerModeDateAndTime;
self.dateFormatter = [[NSDateFormatter alloc] init];
[self.dateFormatter setDateStyle:NSDateFormatterMediumStyle];
[self.dateFormatter setTimeStyle:NSDateFormatterShortStyle];
NSDate *selected = [NSDate dateWithTimeIntervalSince1970:[self.pickerView.date timeIntervalSince1970] - 1];
self.deadlineCounter = [self.formatter stringFromDate:selected];
NSLog(@"selected is: %@", selected);
NSDate *todaysDate = [NSDate date];
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];
self.DeadlineCounter = [NSString stringWithFormat:@"%ld:%02ld:%02ld:%02ld",
(long)days,
(long)hours,
(long)minutes,
(long)seconds];
NSString *documentsDirectory = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject];
NSString *deadline = [NSString stringWithFormat:@"%@/deadline.txt", documentsDirectory];
NSInteger success = [NSKeyedArchiver archiveRootObject:selected toFile:deadline];
NSLog(@"success is: %d",success);
NSLog(@"deadline.txt was written successfully with these contents %@,", self.deadlineCounter);
targetedDatePicker.minimumDate = [NSDate date];
targetedDatePicker.maximumDate = [todaysDate dateByAddingTimeInterval:604800];
}
基本的に、ユーザーが日付ピッカーから「2013 年 9 月 25 日午後 2 時 25 分」を選択した場合、カウントダウン タイマーを作成して別のビューに表示し、オフに設定して選択した日時。(正しいコントローラーで日付を読み書きできるようになりました。timerLabel は "0:00:00:00" の形式で日付を表示しますが、数字が間違っています)