2011-12-29 3 views
0

Привет, я очень новичок в программировании на iOS и играю с датами (сегодняшняя дата и дата через 1 год).Борьба за сохранение даты для последующего использования

Вот код, которым я занимаюсь.

NSCalendar * calendar = [NSCalendar currentCalendar];//Create a calendar 
NSDate *todaysDate = [[NSDate alloc]init]; //get todays date 
NSString *dateToday = [NSString stringWithFormat:@"%@",todaysDate];//convert it to a string 
NSDateFormatter *df = [[NSDateFormatter alloc] init];// create a formatter 
[df setDateFormat:@"yyyy-MM-dd HH:mm:ss ZZZ" ];//input how the date looks as a string 
myDate = [df dateFromString: dateToday];// change it back to a proper NSDate 

NSDateComponents *components = [[NSDateComponents alloc] init]; // create the components 
[components setYear:1];//add 1 year 
nextYear = [calendar dateByAddingComponents:components toDate:todaysDate options:0]; // build the year from component into a variable 


dateNextYear = [NSString stringWithFormat:@"%@",nextYear];//convert it to a string 
NSDateFormatter *yearFormat = [[NSDateFormatter alloc] init];// create a formatter 
[yearFormat setDateFormat:@"yyyy-MM-dd HH:mm:ss ZZZ" ];//input how the date looks as a string 
myDateInTheFuture = [yearFormat dateFromString: dateNextYear];// change it back to a proper NSDate 


NSLog(@" next years date is %@ ", myDateInTheFuture); 
[yearFormat release]; 
[components release]; 
[todaysDate release]; 

я могу получить текущую дату и будущую дату 1 год с этого момента, но я не уверен, как я бы сохранить будущую дату для сравнения, я знаю, я могу использовать пункт «сравнить» для NSDate в check, но когда я устанавливаю будущую дату в переменную каждый раз, когда она запускается, она остается относительной на 1 год отдельно от того, что я проверяю, против которой находится сегодняшняя дата. Его 3am, где я и мой мозг - месиво, так извиняется заранее, если это самая простая вещь, и я просто не могу ее увидеть.

Его первое сообщение, так что прощайте меня, пожалуйста. Благодаря

ответ

1

Я не совсем уверен, что вы пытаетесь сделать, но это то, что я понимаю:

Вы хотите взять текущую дату, добавить год к нему, и манипулировать результирующую дату.

Пожалуйста, сообщите мне, если это неверно.

Для этого выполните следующие действия:

NSDate *todayDate = [NSDate date]; //Create a date that is set to today 
NSDate *resultingDate = [calendar dateByAddingTimeInterval:31556926; //Take the current date and add the amount of seconds in a year to it 

Если вы хотите сохранить это навсегда, используйте NSUserDefaults:

установить:

[userDefaults setObject:resultingDate forKey:@"storedDate"]; 

Надеется, что это помогает,

HBhargava

получить:

NSDate *returnedDate = [userDefaults dateForKey:@"storedDate"]; 
+0

Использование жестко запрограммированный интервал времени, чтобы настроить дату по N количеству дней/недель/лет/и т.д. это ужасная идея (тм), как есть множество особых случаев, которые должны быть приходилось. Пример: Самоа удаляет 30 декабря этого года. http://www.bbc.co.uk/news/business-13330592 Всегда используйте API-интерфейсы даты, чтобы выполнять календарные вычисления и сэкономить много времени на вытягивание волос в будущем. – MyztikJenz

+0

спасибо hbhargava ответ, который я искал, был маршрут по умолчанию пользователя, я ценю, что вы нашли время, чтобы помочь мне, поскольку мне кажется, что я усложнил то, что мне нужно. ура – pidge

Смежные вопросы