0

ここの初心者は、学習目的で提供された「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" の形式で日付を表示しますが、数字が間違っています)

4

1 に答える 1

1

このコードを試してください:

 NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
 [dateFormatter setDateFormat:@"MMM' 'dd','yyyy' 'HH':'mm' a"];
 [dateFormatter setAMSymbol:@"AM"];
 [dateFormatter setPMSymbol:@"PM"];

 NSDate *dateFromString = [dateFormatter dateFromString:uploadDate];
于 2013-09-20T19:10:44.243 に答える