как найти дату 3-го дня от текущей даты iphone / ipad - PullRequest
0 голосов
/ 11 ноября 2010

Может ли кто-нибудь рассказать, как найти дату на 3-й день от текущей даты iphone / ipad.

Заранее спасибо

Ответы [ 6 ]

5 голосов
/ 11 ноября 2010

Вы можете использовать это:

NSDate *today = [[NSDate alloc] init];
NSCalendar *gregorian = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar];
NSDateComponents *offsetComponents = [[NSDateComponents alloc] init];
[offsetComponents setDay:3];
NSDate *threeDaysFromToday = [gregorian dateByAddingComponents:offsetComponents toDate:today options:0];

Слегка измененный пример из Собственная документация Apple по NSDate .Проверьте ссылку для получения дополнительной информации и примеров.

0 голосов
/ 11 ноября 2010

Вот пример кода

    NSDate  * currentDate=[NSDate date];
NSTimeInterval interval=[currentDate timeIntervalSince1970];
NSTimeInterval intervalForThirdDate=interval+86400*3;
NSDate *nextDate=[[NSDate alloc]initWithTimeIntervalSince1970:intervalForThirdDate];
0 голосов
/ 11 ноября 2010
[NSDate dateWithTimeIntervalSinceNow:86400*3]

Но, как кто-то упоминал выше, DST может сделать это слишком неточным. Зависит от того, насколько это важно.

0 голосов
/ 11 ноября 2010

выберите один:

NSDate *futureDate;
NSDateComponents *components = [[[NSDateComponents alloc] init] autorelease];
[components setDay:3];
futureDate = [[NSCalendar currentCalendar] dateByAddingComponents:components toDate:[NSDate date] options:0];
NSLog(@"%@ - %@", [NSDate date], futureDate);



NSDate *futureDate = [[NSDate date] dateByAddingTimeInterval:3 * (24*60*60)];
0 голосов
/ 11 ноября 2010

Что-то вроде:

// get the gregorian calendar ready to go; use the getter for the current system
// calendar if you're happy to deal with other calendars too
NSCalendar *gregorianCalendar = [[NSCalendar alloc]
                                initWithCalendarIdentifier: NSGregorianCalendar];

// get an NSDate object that is three days in the future
NSDate *dateInFuture = [NSDate dateWithTimeIntervalSinceNow:3*24*60*60];

// grab the date components for the bits we want to print in this example
NSDateComponents *componentsOfDateInFuture = 
       [gregorianCalendar
        components:NSYearCalendarUnit | NSMonthCalendarUnit |  NSDayCalendarUnit
          fromDate:dateInFuture];

// and print
NSLog(@"in three days it'll be %04d/%02d/%02d", 
           componentsOfDateInFuture.year,
           componentsOfDateInFuture.month, 
           componentsOfDateInFuture.day);

// clean up
[gregorianCalendar release];

РЕДАКТИРОВАТЬ: ответ Пабло Санта-Крус лучше, чтобы обеспечить вам три дня в будущем, учитывая проблемы перехода на летнее время. Таким образом, вы можете разложить NSDate на день / месяц / год, чтобы иметь дату, а не просто NSDate.

0 голосов
/ 11 ноября 2010
NSDate *today = [NSDate date];
NSTimeInterval threeDays = 86400*3;

NSDate *threeDaysFromToday = [NSDate dateWithTimeInterval:threeDays sinceDate:today];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...