2013-09-20 4 views
0

Новичок здесь, пытаясь модифицировать яблоки, поставляемые образцом «Дата ячейки» для учебных целей, и у меня возникают настоящие проблемы с датами форматирования. У меня есть tableView с тремя отдельными datePicker в строках 1 (datePickerModeDateAndTime), строка 2 (pickerModeDate), строка 3 (pickerModeTime). Прямо сейчас, я просто работаю над тем, чтобы получить значение от первого сборщика (dateAndTime), зарегистрированного, чтобы я мог получить к нему доступ позже. У меня выбранная дата отображается в деталях ячейки tableView в форме «20 сентября 2013 года, 12:12». Я пытаюсь получить значение для детали и написать разницу между «датой NSDate» и выбранным временем в каталоге документов приложения в файле DD: HH: MM: SS, оставшемся, чтобы я мог установить таймер на другое представление, которое начинает отсчет до выбранной даты/времени и отображает счетчик таймера в UILabel. У меня есть журнал, записывающий дату как «2013-09-20 18:12:33 +0000», когда сборщик первоначально загружен на экран, но после изменения компонентов журнал читает «0: 00: 00: -10». Поэтому у меня есть часть, которая частично делает то, что я хочу, но не добилась успеха в получении правильной даты. благодаря!iOS save formatted datePicker strings

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]; 
      } 

В принципе, если пользователь выбирает «25 сентября 2013 г., 2:25 PM» от выбора даты, я хочу, чтобы написать строку так, что таймер может быть создан, отображается в другой точке зрения, и установите значение «выключено» и выбранную дату и время. (Я получил дату, которую нужно написать и прочитать на правильных контроллерах, и timerLabel, отображающий дату в форме «0: 00: 00: 00», но это неправильные номера)

ответ

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]; 
+0

Как бы связать это с моим уже существующим кодом, используя новую датуFromStrong и uploadDate? (У меня буквально есть только 3 недели знаний о самоуправлении) –

+0

Не обязательно просить код, который выкладывается, но больше того, что мне нужно сделать с кодом, который вы дали для его реализации, в основном относящимся к вновь определенному NSDate * dateFromString. Все что угодно помогает. благодаря! –