2013-03-28 2 views
4

В настоящее время я нахожусь в состоянии получить текущую дату iPhone, используя следующий кодКак получить следующую 15-дневную дату в зависимости от даты текущего дня?

NSDate* date = [NSDate date]; 
NSDateFormatter* formatter = [[NSDateFormatter alloc] init]; 
[formatter setDateFormat:@"yyyy-MM-dd"]; 
NSString* currentDateStr = [formatter stringFromDate:date]; 
NSLog(@"User's current Date:%@",currentDateStr); 

, но я хочу получить следующую дату 15 дней от текущей даты, как я могу получить, что?

ответ

6

Попробуйте это:

NSCalendar* calendar = [[[NSCalendar alloc] initWithCalendarIdentifier: NSGregorianCalendar] autorelease]; 
NSDateComponents* components = [[[NSDateComponents alloc] init] autorelease]; 
components.day = 15; 
NSDate* newDate = [calendar dateByAddingComponents: components toDate: self.date options: 0]; 
-2

Там может быть лучше (и я смотрю на этот вопрос, чтобы увидеть, если есть), но это то, что я в настоящее время используют:

+ (NSDate *)offsetFromDate:(NSDate *)fromDate withDays:(int)days 
{ 
    NSTimeInterval timeInterval = (days * 86400); 
    NSDate *date = [[NSDate alloc] initWithTimeInterval:timeInterval sinceDate:fromDate];  
    return date; 
} 

Если Google за количество секунд в день, вы получите значение 86400.

+1

Это очень наивное решение работает в большинстве ситуаций, но, не страшно в некоторых других ситуациях. – Sulthan

+0

Обратите внимание, что во многих регионах мира есть «летнее время», и поэтому некоторые дни имеют один или более час. –

+0

Действительно. Метод компонентов даты - правильный способ сделать это. – jrturton

-1

Try с этим:

NSTimeInterval totalOffset = /*time to add - in seconds */ 
NSDate *today = [NSDate date]; 
NSDate *endWithTZ = [today dateByAddingTimeInterval:totalOffset]; 
+0

Обратите внимание, что во многих регионах мира есть «летнее время», поэтому время суток в секундах не является постоянным. –

-2
NSLog(@"%@", [date dateByAddingTimeInterval:15*24*60*60]); 
+0

это самое простое решение. –

+0

Обратите внимание, что во многих регионах мира есть «летнее время», и поэтому некоторые дни имеют более одного часа. –

+0

Он не работает, например, при дневном освещении, когда можно добавить или удалить час. – Sulthan

1
NSDate *todayDate = [NSDate date]; 
NSDateComponents *dateComponents = [[NSDateComponents alloc] init]; 
[dateComponents setDay:+15]; 
NSDate *afterfifteenDays = [[NSCalendar currentCalendar] dateByAddingComponents:dateComponents toDate:todayDate options:0]; 
NSLog(@"todayDate: %@", todayDate); 
NSLog(@"afterfifteenDays: %@", afterfifteenDays); 
Смежные вопросы